Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие для учеников .doc
Скачиваний:
13
Добавлен:
18.12.2018
Размер:
2.27 Mб
Скачать

§13. Вложенные условные операторы

При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.

Пример

Даны целые числа а, b, с. Если а<b<с, то все числа заменить их квадратами, если а>b>с, то каждое число заменить наименьшим из них, в противном случае сменить знак каждого числа.

Решение

Условие задачи перепишем следующим образом:

а:=а2, b:=b2, c:=c2, если а≤b≤с

а:=с, b:=с, если а>b>с

а:=-а, b:=-b, с:=-с − в остальных случаях.

Program Example_20;

Var a,b,c: Integer;

Begin

Writeln('Введите числа а, b, с');

Readln(a,b,с);

If (a<=b) and (b<=c)

Then Begin

a:=sqr(a); b:=sqr(b); c:=sqr(c)

End

Else If (a>b) and (b>c)

Then Begin a:=c; b:=c End

Else Begin a:=-a; b:=-b; c:=-c End;

Writeln(a:3,b:3,c:3);

Readln

End.

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

Задание

В приведенной выше программе изменим условный оператор следующим образом:

If (a<=b) and (b<=c) Then

Begin

a:=sqr(a); b:=sqr(b); c:==sqr(c)

If (a>b) and (b>c) Then

Begin c:=a; b:=a End

Else Begin a:=-a; b:=-b; c:=-c End;

End;

Как изменится выполнение данной программы? Сформулируйте условие задачи, которую теперь решает данная программа.

Решение задач Задача 1

Написать программу, которая определяет, принадлежит ли точка х отрезку [a,b].

Program Example_21;

{определение принадлежности точки заданному

отрезку}

var a,b,x: real;

begin

writeln('Введите значение переменной х');

readln(x);

writeln('Введите значения границ отрезка');

readln(a,b);

if (x<a) or (x>b) then

writeln ('точка не принадлежит отрезку)

else writeln ('точка принадлежит отрезку');

end.

Задача 2

Точка плоскости задана своими координатами (x,y). Написать программу, определяющую, принадлежит ли она окружности радиуса 4 с центром в точке (2,2).

Program Example_22;

Var x, y: real;

begin

writeln('Введите координаты точки');

readln(x,y);

if (x-2)*(x-2)+(y-2)*(y-2)<=16

then writeln('точка принадлежит окружности')

else writeln('точка не принадлежит окружности’)

end.

Задача 3

Написать программу, вычисляющую значение функции y(x) для заданного х.

210, при х≤10,

y(x)= x3 , при x>10.

Program Example_23;

{вычисление значения функции y(x)}

var x,y: real;

begin

writeln('Введите значение x');

readln(x);

if x<=10 then y:=210 else y:=x*x*x;

writeln('y(', x,')=',y);

end.

Задача 4

Написать программу вычисления значения функции y(x) для заданного x.

x2 , при x>5,

y(x)= 17x-1, при –7≤x≤5,

25, при x≤-7

Program Example_24;

{вычислить значение функции};

var x,y: real;

begin

writeln('Введите значение x');

readln(x);

if x>5 then y:=x*x

else if x>-7 then y:=25

else y:=17*x-1;

writeln('y(',x,')=',y);

end.

Задача 5

Написать программу определения наименьшего из трех чисел.

Program Example_25;

{определение наименьшего из трех чисел}

var a,b,c, min: real;

begin

writeln('Введите три числа');

readln(a,b,c);

min:=a;

if b<min then min:=b;

if c<min then min:=c;

writeln('Наименьшее число= ',min);

end.

Задача 6

Даны два числа. Написать программу, которая меньшее из них возводит в квадрат, а большее оставляет без изменения. Если числа равны, то они не должны быть изменены.

Program Example_26;

var a,b,x,y: real;

begin

writeln('Введите два числа');

readln(a,b);

if a=b then begin x:=a; y:=b end;

if a>b then begin x:=b*b; y:=a end

else begin x:=a*a; y:=b end;

writeln(x,' ', y);

end.

Задача 7

Даны три числа x, y, z. Написать программу, в результате выполнения которой числа удвоятся, если x≤y≤z, и будут заменены на их абсолютные величины в противном случае.

Program Example_27;

var x,y,z: real;

begin

writeln('Введите три числа');

readln(x,y,z);

if (x<=y) and (y<=z) then

begin

x:=2*x;

y:=2*y;

z:=2*z

end

else

begin

x:=abs(x);

y:=abs(y);

z:=abs(z);

end;

writeln (x, ' ', y, ' ', z);

end.