Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GLAVA_4_Operatory_yazyka_S.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
185 Кб
Скачать
☆

Вложенные операторы if

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

if(условие1)

if(условие2) оператор_1;

else оператор_2;

else оператор_3;

При анализе подобных конструкций избежать возможных затруднений позволяет простое правило – else относится к ближайшему свободному if.

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

if(условие){

if(условие) оператор_1;

else оператор_2;

}

else оператор_3;

Конструкция if…else…if

Встречаются задачи, в которых выбор следует сделать между более чем двумя возможными вариантами, каждому из которых соответствует свое условие. Тогда применяется конструкция if…else…if (так называемая конструкция-лестница). Её можно представить в виде:

if (условие1) оператор_1;

else if (условие2) оператор_2;

else if (условие3) оператор_3; …

else if (условиеN)оператор_N;

else // необязательная часть

оператор_по_умолчанию;

Здесь под элементами условие1…условиеN понимаются условные выражения, которые вычисляются сверху вниз. Как только в какой-нибудь ветви при вычислении условного выражения обнаружится истинный результат, будут выполнены операторы, связанные с этой ветвью, а вся остальная часть конструкции опустится. Если окажется, что ни одно из условий не является истинным, будет выполнен последний элемент else (выполняет роль условия, которое действует по умолчанию).

Последний элемент, за которым следует оператор_по_умолчанию (не является обязательным). В подобных конструкциях элемент else связывается с ближайшим предыдущим if в том же блоке, не имеющим элемента else.

Формально уровней вложенности операторов if может быть много, но реально при количестве таких вложенных конструкций, больше чем 4-5, программа становится трудночитаемой и её трудно отлаживать.

// Пример 4.3. Ввести целое число x. Проверить, попадает ли введённое

// значение в заданный диапазон от 1 до 4. Вывести значение x на экран.

// Использовать конструкцию if…else…if.

#include <iostream>

using namespace std;

int main(){

int x;

cout << "Vvedi chislo x = "; cin >> x;

if (x == 1) cout<<"x = 1 \n";

else if (x == 2) cout<<"x = 2 \n";

else if (x == 3) cout<<"x = 3 \n";

else if (x == 4) cout<<"x = 4 \n";

else cout<<"x vne diapazona. \n";

cout<<endl;

}

// Пример 4.4. Найти максимальное значение из введённых чисел x, y, z.

#include <iostream>

using namespace std;

int main(){

int x, y, z, max;

cout<<"Enter the number x, y, z: = "; cin>>x>>y>>z;

cout<<"Variant 1"<<endl;

if(x > y) max = x; // полная форма оператора if

else max = y;

if(z > max) max = z; // краткая форма оператора if

cout<<"max = "<<max<<endl;

cout<<"Variant 2"<<endl;

max = x;

if(y > max) max = y;

if(z > max) max = z;

cout<<"max = "<<max<<endl;

cout<<"Variant 3" <<endl;

max = x > y ? x : y; // условная операция

max = z > max ? z : max;

cout<<"max = "<<max<<endl;

cout<<"Variant 4"<<endl;

if(x > y && x > z) max = x;

else if(y > z) max = y;

else max = z;

cout<<"max = "<<max<<endl;

}

// Пример 4.5. Расположить значения четырех переменных a, b, c, d

// в порядке возрастания их величин.

#include<iostream>

using namespace std;

int main(){

int a, b, c, d, r;

cout<<"Enter a, b, c, d "; cin>>a>>b>>c>>d;

cout<<" a = "<<a<< "b = "<<b<<" c = "<<c<<" d = "<<d<<endl;

if(a>b) { r = a; a = b; b = r;}

if(a>c) { r = a; a = c; c = r;}

if(a>d) { r = a; a = d; d = r;}

if(b>c) { r = b; b = c; c = r;}

if(b>d) { r = b; b = d; d = r;}

if(c>d) { r = c; c = d; d = r;}

cout<<" a = "<<a<<" b = "<<b<<" c = "<<c<<" d = "<<d<<endl;

system("pause");

}

// Пример 4.6. Написать программу-калькулятор, которая может

// выполнять только четыре действия: +, -, *, /.

#include<iostream>

using namespace std;

int main(){

double a, b, rez;

cout<<"Enter a and b: ";

cin>>a>>b;

char oper;

cout<<"Input the operation: ";

cin>>oper;

if(oper == '+'){rez = a + b;

cout<<'\n'<<a<<" + "<<b<<" = "<<rez<<endl;

}

if(oper == '-'){ rez = a - b;

cout<<'\n' <<a << " - " <<b<<" = "<<rez<<endl;

}

if(oper == '*'){rez = a * b;

cout<<'\n'<<a<<" * "<<b<<" = "<<rez<<endl;

}

if(oper == '/')

if(b != 0){rez = a / b;

cout<<"\n\t"<<a<<" / "<<b<<" = "<<rez<<endl;

}

else cout<<"Division by zero!\n";

if(oper != '+' && oper != '-' && oper != '*' && oper != '/')

cout<<"Incorrect operation!\n";

system("pause");

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]