Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа Си 3.docx
Скачиваний:
43
Добавлен:
10.06.2015
Размер:
31.4 Кб
Скачать

Лабораторная работа 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; }