Root /ArchiveAbout
()

Перераспределение значений переменных

Перераспределение значений переменных

На этой странице дано решение примеров If9 - If11 из задачника Абрамяна, в которых рассматриваем работу с двумя числами (целыми или вещественными).

If9. Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B — большее. Вывести новые значения переменных A и B.

var
  A, B, p: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  writeln('Перезапись чисел в порядке возрастания:');
  if A > B then
  begin
    p := A; { <-- переменной p присваиваем значение A }
    A := B; { <-- переменной A присваиваем значение B }
    B := p  { <-- переменной B присваиваем A (p = A) }
  end;
  writeln('A = ', A, ' B = ', B);
  readln
end.

**type** real;: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 If10. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

Здесь используется дополнительная переменная p:

var
  A, B, p: integer;

begin
  writeln('Введите два целых числа A и B: ');
  readln(A, B);
  if A = B then p := 0
  else p := A + B;
  A := p;
  B := p;
  writeln('A = ', p, ', B = ', p);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 Во втором решении задачи if10 не используется дополнительная переменная:

var
  A, B: integer;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  readln(A, B);
  { Сначала находим A в зависимости от условия: }
  if A <> B then A := A + B
  else A := 0;
  B := A; { <== находим В }
  writeln('A = ', A, ', B = ', B);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 If11. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

var
  A, B: integer;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  readln(A, B);
  if A <> B then
  begin
    if A < B then A := B { <-- находим большее число }
  end
  else A := 0;
  B := A;
  writeln('A = ', A, ', B = ', B);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 Другое решение задачи if11 возможно в PascalABC.Net, и здесь мы используем встроенную функцию maх(A, B) для нахождения максимального из двух чисел.

var
  A, B: integer;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  readln(A, B);
  if A <> B then A := max(A, B)
  else A := 0;
  writeln('A = ', A, ', B = ', A);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 **function** Max(a,b: integer): integer;: Возвращает максимальное из чисел a, b.