Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Конструкции выбора




К конструкциям выбора в С++ относят условную конструкцию if и переключатель switch.

Синтаксис условной конструкции:

if (выражение) оператор1;

if (выражение) оператор1; else оператор2;

Выражение должно быть скалярным и иметь арифметический тип или тип указателя. В операторе if оператор1 выполняется в том случае, если выражение ненулевое, иначе выполняется оператор2 или не выполняются никакие действия, если оператор2 не задан, то есть отсутствует else. В частности, если a целое, то if (a) эквивалентно if (a!= 0).

Часто используются в условиях логические операции &&, ||,!. Операции && и || не будут вычислять второй аргумент, если это не нужно. Например, if (p && r) … вначале проверяет, является ли p не нулем, и только, если это так, то проверяет r.

Некоторые простые операторы if могут быть с удобством заменены выражениями арифметического if. Например,

if (a <= b) max = b;

else max = a;

лучше выражается так: max = (a<=b)? b: a;

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

Пример 1. Напишите программу, которая вычисляет и выводит на экран значение

y = .

#include <iostream.h>

void main()

{

double x,y;

cout<< "\nEnter x: ";

cin >> x;

if ((x>0)||(x<-1)) y=1/x;

else y=x;

cout << "\ny="<<y;

}

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

Пример 2. Используя вложенные уловные операторы, найти максимум из трех целых чисел.

#include <iostream.h>

void main()

{

int x,y,z, max;

cout << "Enter x,y,z: ";

cin >>x>>y>>z;

if (x<y)

if (y<z) max=z;

else max=y;

else

if (x<z) max=z;

else max=x;

cout <<"Max= "<< max;

}

В тексте соответствие if и else показано с помощью отступов.

Переключатель является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя:

switch (перключающее_выражение)

{case константное_выражение1: оператор1;

case константное_выражение2: оператор2;

...

case константное_выражение n: оператор n;

default:оператор;

}

Управляющая конструкция switch передает управление к тому из помеченных с помощью case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Переключающее_выражение должно быть целочисленным или его значение должно приводится к целочисленному. В одном переключателе все константные_выражения должны иметь различные значения, но быть одного типа. Любой из операторов может быть помечен одной или несколькими метками вида case константное_выражение:, например, может использовать конструкция вида

case константное_выражение1: case константное_выражение2: оператор;

Если значение переключающего_выражения не совпадает ни с одним из константных_выражений, то выполняется переход к оператору, отмеченному меткой default, которая может и отсутствовать (при этом не выполняются никакие действия). Если не предусмотрены переходы и выходы из переключателя, то в нем последовательно выполняются все операторы, начиная с той метки, на которую передано управление. Для выхода из переключателя обычно используют оператор break.

Пример 3. Напишите программу, запрашивающую ввод с клавиатуры любой десятичной цифры и выводящую на экран названия нечетных десятичных цифр, не меньше заданной. Если была введена не цифра, то выдается сообщение об ошибке.

#include <iostream.h>

void main()

{

char i;

cout<< "Enter number: ";

cin>>i;

cout<<'\n';

switch (i)

{

case '0': case '1': cout<<"one, ";

case '2': case '3': cout <<"three, ";

case '4': case '5': cout <<"five, ";

case '6': case '7': cout <<"seven, ";

case '8': case '9': cout <<"nine, "; break;//производим выход

// из переключателя

default: cout <<"It's not number";

}

}

Если, например, на клавиатуре будет введена цифра 4, то в результате выполнения программы на экран выведется: five, seven, nine.

 

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–12 заданий 1,2,3,4.

Задание 1. Обработка введенного символа

1. Считать символ и определить, является ли он цифрой.

2. Считать символ и определить, является ли он латинской буквой.

3. Считать символ и определить, является ли он русской буквой.

4. Считать символ и определить, является ли он прописной буквой русского или латинского алфавита.

5. Считать символ и определить, является ли он строчной буквой русского или латинского алфавита.

6. Считать символ и определить, является ли он гласной буквой русского алфавита.

7. Считать символ и определить, является ли он гласной буквой латинского алфавита.

8. Считать символ и определить, является его ASCII-код четным.

9. Считать два символа и выдавать на экран сообщение, код какого из них больше.

10. Считать два символа строчных латинских букв и определить, расположены ли они по алфавиту.

11. Считать два символа цифр и определить какая из них больше.

12. Считать скобку и определить, открывающая она или закрывающая. Возможны скобки (), {}, [], <>.

Задание 2. Вычисление значения функции

1. 2.

3. 4.

. 6.

  1. Если , то в противном случае z =0.
  2. Если x<0 или x>10, то z = x, в противном случае
  3. Если , то в противном случае y = a 3.
  4. Если или , то в противном случае .
  5. Если x=y 2 или y=x 2, то z= 0, в противном случае

Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач

1. Даны числа . Определить, коллинеарны ли вектора с такими координатами.

2. Значение переменных a, b, c поменять местами так, чтобы оказалось .

3. По номеру некоторого года определить номер его столетия (учесть, что, к примеру, началом 20-го столетия был 1901, а не 1900 год).

4. Даны числа . Выяснить, являются ли прямые, описываемые уравнениями и параллельными, перпендикулярными, просто пересекаются либо совпадают.

5. По трем введенным вещественным числам выяснить, можно ли построить треугольник с такими длинами сторон, и, если можно, то какой: равносторонний, равнобедренный, прямоугольный или общего вида.

6. Даны числа . Определить, равны ли вектора с такими координатами.

7. Введите свой месяц и день рождения. Определите, является ли ваш день рождения очень счастливым, просто счастливым или обычным. День считается очень счастливым, если остатки от деления на 7 сумм цифр месяца и дня совпадают, просто счастливым, если хотя бы один из этих остаток равен 0, и обычным в противном случае.

8. Определить, имеют ли поля шахматной доски (n 1, m 1) и (n 2, m 2) одинаковый цвет. (n 1, m 1, n 2, m 2 – натуральные числа от 1 до 8).

9. Определить, угрожает ли слон, расположенный на поле (n 1, m 1) шахматной доски, фигуре, расположенной на поле (n 2, m 2). (n 1, m 1, n 2, m 2 – натуральные числа от 1 до 8).

10. Определить, угрожает ли ферзь, расположенный на поле (n 1, m 1) шахматной доски, фигуре, расположенной на поле (n 2, m 2). (n 1, m 1, n 2, m 2 – натуральные числа от 1 до 8).

11. Определить, угрожает ли конь, расположенный на поле (n 1, m 1) шахматной доски, фигуре, расположенной на поле (n 2, m 2). (n 1, m 1, n 2, m 2 – натуральные числа от 1 до 8).

12. Даны три вещественных числа a, b, c. Вычислить сколько вещественных корней имеет квадратное уравнение или не имеет их вообще. Если вещественные корни существуют, вычислить их.

Задание 4. Mультиветвление

1. Напишите программу, запрашивающую с клавиатуры два вещественных числа и один из знаков операций +, -,*,/ и выводящую на экран результат соответствующего арифметического действия над этими числами.

2. Напишите программу, выдающую на экран название оценки в зависимости от количества набранных баллов: 5 – «отлично», 4 – «хорошо», 3 – «удовлетворительно», 1,2 – «неудовлетворительно».

3. Напишите программу, запрашивающую с клавиатуры два вещественных числа и один из знаков операций <(меньше), >(больше), =(равно),!(не равно) и выводящую на экран результат соответствующей операции сравнения над этими числами.

4. Введите число и месяц рождения. Определить, под каким знаком зодиака рожден человек в этот день. (Считается, что каждый знак зодиака начинает оказывать свое влияние с 22 числа каждого месяца).

5. Напишите программу, выводящую на экран основное положительное качество человека по дате его рождения. Если сумма цифр числа и месяца рождения человека равна 3, то основным его качеством будет ум, 4 - красота, 5 - доброта, 6 - энергичность, 7 - скромность, в противным случае трудно выделить основное качество.

6. Определить, каким является для человечества введенный год. Год считается счастливым, если остаток от деления суммы его двух последних цифр на 7 равен 0, удачным - 1, неудачным - 2, несчастным - 3, обычным - в остальных случаях.

7. Дано двузначное число. Подсчитать сумму цифр этого числа и напечатать название числа этой суммы, если оно меньше 10. Например, при вводе числа 34 должно быть выдано сообщение: “сумма цифр числа равна семи”, при вводе числа 91 – “сумма цифр числа больше девяти”.

8. По введенному с клавиатуры символу (!?:;,. –) напечатать название знака препинания или выдать сообщение, что введен не знак препинания.

9. Написать программу, выводящую на экран строку “switch” при вводе числа 1, строку “конструкции switch” - при вводе числа 2, “пример конструкции switch” – при вводе числа 3, “просто пример конструкции switch” – при вводе числа 4 и “Это просто пример конструкции switch” – при вводе числа 5. В противном случае вывести на экран сообщение “Введен неверный код строки”.

10. Напишите программу, запрашивающую с клавиатуры номер месяца и выводящую на экран его название. Если введено число больше 12, то выдается соответствующие сообщение.

11. Напишите программу, запрашивающую ввод с клавиатуры любой десятичной цифры и выводящую на экран название ближайшей нечетной десятичной цифры, не меньше заданной. Если была введена не цифра, то выдается сообщение об ошибке.

12. Введите с клавиатуры 7 слов. Затем по введенной цифре определите, существует ли слово с таким порядковым номером, и, если существует, выведите его на экран. Например, если набраны слова “один два три четыре пять шесть семь”, то при нажатии клавиши 5 на экран должно быть выведено слово “пять”.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 567; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.