Часто приходится выбирать путь решения задачи не из двух, а из нескольких возможных. В программировании это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.
Пример:
Даны целые числа a, b, c. Если a<=b<=c, то все числа заменить их квадратами, если a>b>c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.
Решение
Условие задачи перепишем следующим образом:
a = a2, b = b2, c = c2, если a <= b <= c
a = c, b = c, если a>b>c
a = -a, b = -b, c = -c, в остальных случаях.
Program Example_4; Var a,b,c: Integer; Begin Writeln('Введите числа a, b, c'); Readln(a,b,c); 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) Else If (a>b) And (b>c) Then Begin a:=c; b:=c End; Else Begin a:=-a; b:=-b; c:=-c End; End;
Как изменится выполнение данной программы? Сформулируйте условие задачи, выполняемой данной программой.
Решение
Определить значение логического выражения:
(-3>=5) Or Not(7<9) And(0<3)
Имеется условный оператор: If D<>10 Then writeln('ура!') Else Writeln('плохо...');. Можно ли заменить его следующими операторами:
If D=10 Then Writeln('ура!') Else Writeln('плохо...');
If Not(D=10) Then Writeln('ура!') Else Writeln('плохо...');
If Not(D=10) Then Writeln('плохо...') Else Writeln('ура!');
If Not(D<>10) Then Writeln('плохо...') Else Writeln('ура!').
Какими будут значения переменных j, k после выполнения условного оператора: If j>k Then j:=k-2 Else dec(k,2);, если исходные значения переменных равны:
j = 3, k = 5;
j = 3, k = 3;
j = 3, k = 2.
Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a - нечетное и a*b, если a - четное.
Вычислить значение функции:
{ x2 + 5, при x>3 , x-8, при x<=3
Найти наибольшее из трех данных чисел.
Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.
Вычислить значение функции:
{ x-12, при x>0, 5, при x=0, x2, при x<0
Даны три целых числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
Написать фрагмент программы, подсчитывающий сумму только положительных из трех данных чисел.
Даны три числа. Написать фрагмент программы, подсчитывающий количество чисел, равных нулю.
После выполнения операторов
a := 0;
If a<>0 Then; a := 2
значение переменной равно двум. Объясните почему.
Используя составной оператор, упростите следующий фрагмент программы:
If a>b Then c := 1; If a>b Then d := 2; If a<=b Then c := 3; If a<=b Then d := 4.
Каким будет значение переменной a после выполнения операторов:
a := 3;
If a<4 Then Begin Inc(a,2); Inc(a,3); End.
Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел
Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае - сообщение ''M на N нацело не делится''.
Найти количество положительных (отрицательных) чисел среди четырех целых чисел A, B, C и D
Чему равны значения переменных a и b после выполнения последовательности действий:
a := 15 Div (16 Mod 7); b := 34 Mod a *5 - 29 Mod 5*2; a := 4 * 5 Div 3 Mod 2; b :=4 * 5 Div ( 3 Mod 2); a := a*b; b:= b*b.
Составьте программу, которая определяла бы вид треугольника (если данные отрезки позволяют его построить).
Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго по абсолютной величине.
Составьте программу вычисления выражения:
max(x + y + z, xyz) + 3;
min(x2 + y2, y2 + z2) - 4, если x, y, z введены с клавиатуры.
Составьте программу, которая из трех введенных с клавиатуры чисел возводит в квадрат положительные, отрицательные оставляет без изменения.