Вы находитесь на странице: 1из 6

ЛАБОРАТОРНАЯ РАБОТА № 5

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ


ПРОЦЕССОВ

1. Цель работы
Изучение принципов алгоритмизации и структуры алгоритмов
циклических вычислительных процессов и задач, связанных с
обработкой массивов. Изучение структурированного типа данных –
массива. Освоение методики пошаговой детализации задачи.

2. Ход работы
Вариант 10: задание 178в

(в)

2.1. Входные данные:


-> unsigned int[] arrayOfNuturalNums – массив натуральных
чисел.
2.2. Выходные данные:
-> int countOfSquareOfAnEvenNumber – количество чисел,
являющихся квадратами четных чисел.

Лист

10
Изм. Лист № докум. Подпись Дата
2.3. Алгоритм:

Лист

11
Изм. Лист № докум. Подпись Дата
2.4. Реализация:
#include <iostream>
#include <vector>
#include <cmath>

int main()
{
size_t arrayLength;
unsigned int countOfSquareOfAnEvenNumber = 0;

srand(time(0));

std::vector<unsigned> arrayOfNaturalNums;

double iterparant;

std::cout << "Enter array length (0 - for undefined): ";


std::cin >> arrayLength;

if (arrayLength)
{
bool type;

arrayOfNaturalNums.resize(arrayLength);

std::cout << "Enetr array: 1 - random, 0 - manual input: ";


std::cin >> type;

if (type)
{
for (auto& elm : arrayOfNaturalNums)
{
elm = 1 + rand() % 20;

std::cout << elm << " ";

countOfSquareOfAnEvenNumber +=
modf(sqrt(elm), &iterparant) == 0 && static_cast<int>(sqrt(elm)) % 2
== 0;
Лист

12
Изм. Лист № докум. Подпись Дата
}
}
else {
for (auto& elm : arrayOfNaturalNums)
{
std::cout << "Enter array elm -> ";
std::cin >> elm;

countOfSquareOfAnEvenNumber +=
modf(sqrt(elm), &iterparant) == 0 && static_cast<int>(sqrt(elm)) % 2
== 0;
}
}
}
else
{
unsigned int arrayElm;

std::cout << "For stop input set 0\n -> Enter array elm: ";
std::cin >> arrayElm;

while (arrayElm)
{
std::cout << " -> Enter array elm: ";

arrayOfNaturalNums.push_back(arrayElm);

countOfSquareOfAnEvenNumber +=
modf(sqrt(arrayElm), &iterparant) == 0 &&
static_cast<int>(sqrt(arrayElm)) % 2 == 0;

std::cin >> arrayElm;


}
}

std::cout << "\nCount of square of an even number " <<


countOfSquareOfAnEvenNumber;

return 0;
}
Лист

13
Изм. Лист № докум. Подпись Дата
2.5. Тестирование:
Input Output Ручной
результат
16 2 13 20 15 11 2 2
11 1 16 1 9 18
14 5 0
16 10 10 8 15 15 1 1
20 20 20 15 0
4 5 3 18 16 0 2 2
6 16 2 9 5 4 0 2 2

3. Контрольные вопросы
3.1. Функциональная схема цикла и назначение ее отдельных частей.
Цикл состоит из тела цикла и условия. При выполнении условия
выполняется тело цикла.

3.2. Какие виды циклов существуют, в чем их принципиальные


отличия?
Существуют циклы:
 while: цикл с предусловием. Проверяется условие, выполняется
тело цикла, повтор проверки и т. д.
 do…while: цикл с пост-условием. То же, что и while, но условие
проверяется после тела цикла.

3.3. Назначение цикла for и его отдельных компонентов.


Состоит из счетчика, условия и действия после итерации (обычно
инкремент счетчика); создан для циклов, количество итераций которых
заранее известно.

3.4. Укажите, сколько операторов можно разместить в теле


цикла?
Без операторных скобок – 1 оператор, иначе – неограниченное
количество.

3.5. Можно ли в теле цикла изменять значение параметра


цикла?
Нет.
Лист

14
Изм. Лист № докум. Подпись Дата
3.6. Можно ли вне тела цикла использовать значение параметра
цикла?
Нет.

3.7. Как работают операторы while и do-while?


Оба проверяют условие и выполняют тело цикла в зависимости
от результата; различие в том, что do-while проверяет условие
после прохождение тела цикла, что даёт ему 100% выполнение
первой итерации.

3.8. Какими способами можно инициализировать массив?


 <T>[array_elm_count] array_name = {…}
 std::vector<T> array_name = {…};
 auto array_name = new <T>[array_elm_count] {…}

array_elm_count при инициализации можно не указывать.

3.9. Какими способами можно обращаться к элементам


массива?
 arrayName[index];
 *(array_ptr + inex);

3.10. Какова общая схема работы с массивом?


Для работы с массивами используются циклические
конструкции.

Вывод: в ходе работы изучены принципы алгоритмизации и


структуры алгоритмов циклических вычислительных процессов и
задач, связанных с обработкой массивов, изучен структурированный
тип данных – массив, освоена методика пошаговой детализации задачи.

Лист

15
Изм. Лист № докум. Подпись Дата

Вам также может понравиться