Лабораторная работа 3
С/С++: Программы циклической структуры
Цель и содержание: приобретение практических навыков в составлении алгоритмов и программ циклической структуры.
Теоретическое обоснование
Операторы циклов. В языке С/С++ существует 3 вида циклов: 1) цикл с параметром или цикл типа for; 2) цикл с предусловием или цикл типа while, 3) цикл с постусловием или цикл типа do ... while . Во всех этих циклах условие продолжения цикла заключается в круглые скобки. Повторяющаяся часть цикла (тело цикла) состоит из одного оператора, если требуется выполнить несколько операторов, они заключаются в фигурные скобки, образуя составной оператор.
Цикл с параметром
Для цикла типа for заголовок состоит из трех разделов: инициализации (присваивания начальных значений), проверки условия повторения, модификации (изменения параметров). Формат записи цикла с параметром:
for (раздел_1; раздел_2 ; раздел_3) тело цикла;
Если какой–либо из разделов отсутствует, то точка с запятой остается в качестве разделителя.
Для досрочного выхода из цикла и перехода на следующий оператор после цикла используется оператор break. Для пропуска всех операторов, оставшихся до конца тела цикла и перехода к следующему повторению цикла, используется оператор continue.
Пример 1. Даны N чисел. Найти среди них количество отрицательных чисел.
# include <iostream.h>
# include <math.h>
main()
{ float a; int kol, i, n; // объявление переменных
cout <<”\n Введите количество чисел”;
cin >> N; // ввод значения N
for (kol=0, i = 1; i<= n; i++) //заголовок цикла, первоначально количество чисел kol=0
{cout <<”Введите число”; cin >> a;
if (a<0) kol ++; //прибавление единицы к kol, если число отрицательно
} //возвращение на начало цикла с увеличением счетчика на шаг
cout << "\n Количество всех отрицательных чисел="<< kol;
return 0;
}
Пример 2. Даны N чисел. Найти наибольшее среди них.
… // объявление переменных и ввод значения N
for (max = –32000, i = 1; i<= n; i++) //первоначальное значение max
{cout <<”Введите число”; cin >> a;
if (a>max) max=a; //сравнение числа с максимальным
Next i //возвращение на начало цикла с увеличением счетчика на шаг
cout<< "\n Наибольшее из чисел ="; max
Пример 3. Даны N чисел. Найти сумму отрицательных среди них.
… // объявление переменных и ввод значения n
for (S=0, i = 1; i<= n; i++) //начало цикла, первоначально количество чисел равно 0
{cout <<”Введите число”; cin >> a;
if (a<0) S +=a; //прибавление числа к сумме, если число отрицательно
} //возвращение на начало цикла с увеличением счетчика на шаг
cout << "\n Сумма всех отрицательных чисел="<< S;
}
Циклы с неизвестным количеством повторений
Формат записи цикла с предусловием:
while (условие) тело цикла;
Формат записи цикла с постусловием:
do {тело цикла} while (условие);
Циклы с предусловием и постусловием продолжаются до тех пор, пока условие истинно. В отличие от цикла с предусловием, цикл с постусловием выполнится хотя бы один раз.
Изменим условие в примере 3: Дана последовательность чисел и величина K, введенная с клавиатуры. Определить, сколько чисел надо ввести, чтобы их сумма превысила величину K. Такую программу можно реализовать с помощью циклов предусловия или постусловия следующим образом:
#include<iostream.h>
main()
{ int K,S, i;
cout << “Введите К\n”; cin>>K;
// цикл с пред. условием //цикл с пост. условием
S=0; i= 0; S=0; i=0;
while ( S<K) do
{ cout <<”Введите число”; { cout <<”Введите число”;
cin >> a; cin >> a;
i++ ; S+=a; i++; S+=а; }
}; while ( S<K) ;
cout <<“Кол–во введенных чисел=“ << i<< “их сумма=“<<S;
return 0; }