else cout<<"Tpeyгольник не существуетет\n";
break;}
Ò case 3:break;
Ò default: cout <<"Номер фигуры указан не верно\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«"\t"; //выводим на экран значение i n ответ
Ò ++i;} //увеличиваем i на единицу 10 12345678910
Ò return 0;}
Ò Замечание: используя операцию постфиксного инкремента, тело цикла можно заменить одной командой cout <<;'++ <<"\t".
Ò В отличие от цикла 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++<<"\t"; //ее значении на единицу n ответ
Ò whiie (i<=n); //до тех пор пока i меньше или равна n 10 1 2 3 4 5 6 7 8 9 10
Ò return 0;}
Ò Цикл с параметром имеет следующую структуру:
Ò 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<<"\t"; //выводить на экран значение i 10 123456789 10
Ò return 0;}
Ò Замечание. Используя операцию постфиксного инкремента при выводе данных на экран, цикл for можно преобразовать следующим образом:
Ò for (int i=l ;i<=n;) cout<<i+ + <<"\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\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<<"\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++<<"\t";
cout<<i*i++<<"\t";. while (i<=b);
return 0;} return 0;}
Ò Выражение i*i++ (значение которого выводится на экран в теле каждого из циклов)
Ò С учетом приоритета в начале выполнится опрац.умножение, результат которой будет помещен в выходной поток, а затем постфиксный инкремент увеличит значение i на 1.
Ò Написать программу, которая выводит на экран квадраты всех четных чисел из диапазона от А до В (А и В целые числа, при этом А<В).
Ò (решить можно с помощью любого оператора цикла);
Ò В C++ есть четыре оператора, изменяющие естественный порядок выполнения операторов:
Ò оператор безусловного перехода goto,
Ò оператор выхода break,
Ò оператор перехода к следующей итерации цикла continue,
Ò оператор возврата из функции return.
Ò Оператор безусловного перехода goto имеет формат: goto <метка>;
Ò В теле той же функции должна присутствовать ровно одна конструкция вида:
Ò <метка>: <оператор>;