Root /ArchiveAbout
()

Значения переменных и их порядковые номера

Значения переменных и их порядковые номера

If16. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.

Если числа упорядочены по возрастанию, то выполняется неравенство A<B<C. На Паскале это можно записать как (A<B)**and**(B<C). Эта программа исключает положительный ответ в случае равныех чисел, поскольку в условии задачи имеется ввиду строгая упорядоченность по возрастанию (A<B и B<C):

var
  A, B, C: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  write('C = ');
  readln(C);
  writeln('Результат: ');
  if (A < B) and (B < C) then begin
    A := 2 * A; { <== Удваиваем А, В, С }
    B := 2 * B;
    C := 2 * C
  end
  else begin
    A := -A; { <== Меняем на противоположные }
    B := -B;
    C := -C
  end;
  writeln(' A = ', A, ', B = ', B, ', C = ', C);
  readln
end.

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

Решение этой задачи аналогично решению предыдущей задачи If16, только здесь надо добавить условие расположенности чисел по убыванию. Если A>B>C, то записать на Паскале это можно как (A>B)**and**(B>C).

var
  A, B, C: real;

begin
  write('A = ');
  readln(A);
  write('B = ');
  readln(B);
  write('C = ');
  readln(C);
  writeln('Результат: ');
  if ((A < B)and(B < C))or((A > B)and(B > C)) then begin
    A := 2 * A;
    B := 2 * B;
    C := 2 * C
  end
  else begin
    A := -A;
    B := -B;
    C := -C
  end;
  writeln(' A = ', A, ', B = ', B, ', C = ', C);
  readln
end.

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

var
  a, b, c: integer;

begin
  writeln('Введите три числа:');
  readln(a, b, c);
  { Условие равенства и не равенства всех чисел: }
  if ((a = b)and(b = c)) or { <-- Все три числа равны }
     ((a <> b)and(b <> c)and(a <> c)) then { <-- Все числа разные }
   writeln('Задача не имеет решения')
  else begin
     write('Порядковый номер неравного числа: ');
     { Находим номер отличного от других числа: }
     if b = c then writeln(1){ <-- неравное число: a }
     else
     if a = c then writeln(2){ <-- неравное число: b }
     else writeln(3) { <-- a=b, неравное число: c }
  end;
  readln
end.

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

Второй вариант решения задачи if18 пересматривает все возможные варианты:

var
  a, b, c: integer;

begin
  writeln('Введите три числа:');
  readln(a, b, c);
  { Находим номер отличного от других числа: }
  if (b = c)and(b <> a) then writeln(1) { неравное: a }
  else
  if (c = a)and(c <> b) then writeln(2) { неравное: b }
  else 
  if (a = b)and(a <> c) then writeln(3) { неравное: c }
  else writeln('Вы ошиблись при вводе чисел');
  readln
end.

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

var
  A, B, C, D: integer;

begin
  writeln('Введите четыре целых числа:');
  readln(A, B, C, D);
  { Находим номер отличного от других числа: }
  if (A = B)and(B = C)and(D <> A) then writeln(4) { число: D }
  else
  if (A = B)and(B = D)and(C <> B) then writeln(3) { число: C }
  else
  if (A = C)and(C = D)and(B <> C) then writeln(2) { число: B }
  else
  if (B = C)and(C = D)and(A <> D) then writeln(1) { число: A }
  else writeln'Вы ошиблись при вводе чисел');
  readln
end.

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