Сделайте это задание ** языке Паскаль с помощью условного оператора

0 голосов
38 просмотров

Сделайте это задание на языке Паскаль с помощью условного оператора


image

Информатика (28 баллов) | 38 просмотров
Дан 1 ответ
0 голосов

Основная сложность задачи состоит в том, чтобы заменить значения переменных. Классический вариант замены - это ввод дополнительной переменной, куда будем временно записывать одно из чисел, чтобы не "затереть" его при присвоении.

Классический вариант:

program z;
var x,y,c:real;
begin
write('x >> ');
readln(x);
write('y >> ');
readln(y);
if x>y then 
  begin 
    c:=x;   {сохранить х временно в переменную с}
    x:=y;   {присвоить в х новое значение из у}
    y:=c;   {присвоить в у значение переменной х, которое сейчас хранится в с}
  end;
writeln('x=',x);
writeln('y=',y);
end.

Есть и нетривиальный вариант замены значений двух переменных, часто встречающийся в задачах олимпиадного характера, а именно, заменить значения двух переменных без ввода дополнительной переменной! И здесь используется математический фокус с числами.
Например, пусть х=6, а у=5.
Выполним первое действие: x:=x+y, то есть новое значение переменной х будет равно сумме старого значения х и у:
х=6+5=11.
Выполним второе действие: y:=х-у, то есть из нового значения переменной х вычесть значение у и запишем результат опять в у:
у=11-5=6.
Выполним третье действие: x:=x-y, то есть из нового значения переменной х вычесть новое значение у и записать результат в переменную х:
х=11-6=5.
Итак, было х=6, у=5, а стало х=5, у=6. То есть значения переменных х и у поменялись местами!
Математика "рулит"! ;-)

program z;
var x,y,c:real;
begin
write('x >> ');
readln(x);
write('y >> ');
readln(y);
if x>y then 
  begin 
    x:=x+y;
    y:=x-y;
    x:=x-y;
  end;
writeln('x=',x);
writeln('y=',y);
end.

(1.2k баллов)
0

Почему x>> ;y>>

0

А нет

0

Все понял

0

На рисунке просто так указан формат ввода) Если это не обязательно, можно просто удалить знаки >>