Смекни!
smekni.com

Язык программирования С (стр. 3 из 5)

else cout<<"Tpeyгольник не существуетет&bsol;n";

break;}

Ò case 3:break;

Ò default: cout <<"Номер фигуры указан не верно&bsol;n";}

return 0;}

задание

Ò 1. Дана точка на плоскости с координатами (х, у).

Ò Составить программы, которые выдают одно из сообщений:

Ò «Да», «Нет», «На границе» ,

Ò в зависимости от того, лежит ли точка:

- внутри заштрихованной области,

- вне заштрихованной области

- или на ее границе.

Области задаются графически следующим образом:

Ò 2. Дан порядковый номер месяца, вывести на экран его название.

Ò 3. Дан порядковый номер дня недели, вывести на экран количество дней оставшихся до конца недели.

Операторы цикла

Ò Операторы цикла используются для организации многократно повторяющихся вычислений.

- цикл с предусловием while,

- цикл с постусловием do while

- цикл с параметром for.

Цикл с предусловием while:

Ò Оператор цикла while организует выполнение одного оператора (простого или составного) неизвестное заранее число раз.

Ò Формат цикла while: while (В) S;

Ò В - выражение, истинность которого проверяется (условие завершения цикла);

Ò S - тело цикла: один оператор (простой или составной).

Ò Перед каждым выполнением тела цикла анализируется значение выражения В:

- если оно истинно, то выполняется тело цикла, и управление передается на повторную проверку условия В;

- если значение В ложно - цикл завершается и управление передается на оператор, следующий за оператором S.

- если результат выражения В окажется ложным при первой проверке, то тело цикла не выполнится ни разу

- если условие В во время работы цикла не будет изменяться, то возможна ситуация зацикливания, то есть невозможность выхода из цикла.

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

Рассмотрим программу вывода на экран целых чисел из интервала от 1 до n.

Ò #include <iostream>

Ò using namespace std:

Ò int main()

Ò { intn, i=1;

Ò cout <<"n="; cin >>n;

Ò while (i<=n) //пока i меньше или равно n Результаты работы программы:

Ò { cout«i«"&bsol;t"; //выводим на экран значение i n ответ

Ò ++i;} //увеличиваем i на единицу 10 12345678910

Ò return 0;}

Ò Замечание: используя операцию постфиксного инкремента, тело цикла можно заменить одной командой cout <<;'++ <<"&bsol;t".

Цикл с постусловием do while

Ò В отличие от цикла while условие завершения цикла проверяется после выполнения тела цикла.

Ò Формат цикла do while: do S while (В);

В - выражение, истинность которого проверяется (условие завершения цикла);

S - тело цикла: один оператор (простой или блок).

Ò Сначала выполняется оператор S, а затем анализир-ся значение выражения В:

- если оно истинно, то управление передается оператору S,

- если ложно - цикл заверш. и управление передается на оператор, следующий за условием В.

Пример(do while): программа вывода на экран целых чисел из интервала от 1 до п.

Ò #include <iostream>

Ò using namespace std;

Ò int main()

Ò {intn, i=1;

Ò cout <<"n="; cin >>n;

Ò do //выводим на экран i, а замет увеличиваем Результаты работы программы:

Ò сout<<i++<<"&bsol;t"; //ее значении на единицу n ответ

Ò whiie (i<=n); //до тех пор пока i меньше или равна n 10 1 2 3 4 5 6 7 8 9 10

Ò return 0;}

Цикл с параметром for

Ò Цикл с параметром имеет следующую структуру:

Ò for (<инициализация>; <выражение>; <модификации>) <оператор>;

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

Ò В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки.

Ò Выражение определяет условие выполнения цикла:

- если его результат истинен, цикл выполняется.

Ò Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с параметром реализован как цикл с предусловием.

Ò Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла.

Ò В части модификаций можно записать несколько операторов через запятую.

Ò Оператор (простой или составной) представляет собой тело цикла.

Ò Любая из частей оператора for (инициализация, выражение, модификация, оператор) может отсутствовать, но точку с запятой, определяющую позицию пропускаемой части, надо оставить.

Ò #include <iostream>

Ò using namespace std;

Ò int main()

Ò { intn; cout <<"n="; cin >>n; Результаты работы программы:

Ò for (int i=1; j<=n; i++) //для i om 1 дo n с шагом 1 n ответ

Ò cout<<i<<"&bsol;t"; //выводить на экран значение i 10 123456789 10

Ò return 0;}

Ò Замечание. Используя операцию постфиксного инкремента при выводе данных на экран, цикл for можно преобразовать следующим образом:

Ò for (int i=l ;i<=n;) cout<<i+ + <<"&bsol;t";

Ò В этом случае в заголовке цикла for отсутствует блок модификации.

Вложенные циклы

Ò Циклы могут быть простые или вложенные (кратные, циклы в цикле).

Ò Вложенными могут быть циклы любых типов: while, do while, for.

Ò Структура вложенных циклов на примере типа for приведена ниже:

for(i=1;i<ik;i++)

{…

for (j=10; j>jk;j- -)

{...for(k=1;k<kk;j+=2){...} 3 2 1

...}

...}

Каждый внутренний цикл должен быть полностью вложен во все внешние циклы.

--- «Пересечения» циклов не допускается.

Ò Рассмотрим пример использования вложенных циклов, который позволит вывести на экран следующую таблицу:

Ò 2 2 2 2 2 #include <iostream>

Ò 2 2 2 2 2 using namespace std;

Ò 2 2 2 2 2 int main()

Ò 2 2 2 2 2 { for (int i=1; i<=4;++i,cout<<endI) //внешний цикл

for (int j= 1; j<=5; ++]) //внутренний цикл

cout<<"2&bsol;t"; //тело внутреннего цикла

return 0;}

Ò Внешний цикл определяет количество строк, выводимых на экран. В блоке модификации данного цикла стоят два оператора.

Ò Первый ++/ будет увеличивать значение i на единицу после каждого выполнения внутреннего цикла, а второй -cout <<endl будет переводить выходной поток на новую строку.

Ò Внутренний цикл является телом внешнего цикла.

Ò Внутренний цикл определяет, сколько чисел нужно вывести в каждой строке, а в теле внутреннего цикла выводится нужное число.

Ò Рассмотрим еще один пример использования вложенных циклов, который позволит вывести на экран следующую таблицу:

#include <iostream>

1 3 using namespace std;

1 3 5 int main()

1 3 5 7 { for (int i=1; i<=5; ++i, cout<<endl) //внешний цикл

1 3 5 7 9 for(int j=1;j<=2*i-1;j+=2) //внутренний цикл

cout<<j<<"&bsol;t"; //тело внутреннего цикла

return 0;}

Ò В данном случае таблица состоит из пяти строчек, в каждой из которых печатаются только нечетные числа.

Ò Последнее нечетное число в строчке зависит от ее номера.

Ò Эта зависимость выражается через формулу k =2i-l (зависимость проверить самостоятельно), где к - последнее число в строке, ;i - номер текущей строки. Внешний цикл следит за номером текущей строки i а внутренний цикл будет печатать нечетные числа из диапазона от 1 до 2i-I.

задание

Ò Вывести на экран числа в виде следующих таблиц:

Ò 1.) 2.)

5 5 5 5 5 5 5

5 5 5 5 5 5 5 5

5 5 5 5 5 5 5 5 5

5 5 5 5 5 5 5 5 5 5

5 5 5 5 5

Использование операторов цикла

Программу, которая выводит на экран квадраты всех целых чисел от А до В

(А и В целые числа, при этом А<В).

Ò Необходимо перебрать все целые числа из интервала от А до В.

Ò Эти числа представляют собой упорядоченную последовательность, в которой каждое число отличается от предыдущего на 1.

#include <iostream> #include <iostream>

using namespace std; using namespace std;

int main() int main()

{ int a, b; { int a, b;

cout <<"a="; cin >>a; cout <<"a="; cin >>a;

cout <<’’b-’’; cin >>b; cout <<"b="; cin >>b;

int i=a; int i=a;

while (i<=b) do cout<<i*i++<<"&bsol;t";

cout<<i*i++<<"&bsol;t";. while (i<=b);

return 0;} return 0;}

Ò Выражение i*i++ (значение которого выводится на экран в теле каждого из циклов)

Ò С учетом приоритета в начале выполнится опрац.умножение, результат которой будет помещен в выходной поток, а затем постфиксный инкремент увеличит значение i на 1.

задание

Ò Написать программу, которая выводит на экран квадраты всех четных чисел из диапазона от А до В (А и В целые числа, при этом А<В).

Ò (решить можно с помощью любого оператора цикла);

Операторы безусловного перехода

Ò В C++ есть четыре оператора, изменяющие естественный порядок выполнения операторов:

Ò оператор безусловного перехода goto,

Ò оператор выхода break,

Ò оператор перехода к следующей итерации цикла continue,

Ò оператор возврата из функции return.

Оператор безусловного перехода goto

Ò Оператор безусловного перехода goto имеет формат: goto <метка>;

Ò В теле той же функции должна присутствовать ровно одна конструкция вида:

Ò <метка>: <оператор>;