• Почему программа выдает 4312 вместо 4321 ??? В чем я ошиблась??

    procedure swap(var a, b: real);
    var t: real;
    begin
    t := a; a := b; b := t;
    end;
    var a, b, c, d: real;
    begin
    writeln('Введите четыре числа ');
    readln(a, b, c, d);
    if (a < b) then swap(a, b);
    if (b < c) then swap(b, c);
    if (d < a) then swap(d, a);
    if (a < d) then swap(a, d);
    writeln(a, b, c, d)
    end.

    Задача: Напишите процедуру, которая переставляет 4 числа в порядке убывания.

    Скажите пожалуйста

Ответы 7

  • Задания вообще здесь нет, только код и вопрос
    • Автор:

      lailacv4n
    • 5 лет назад
    • 0
  • Читай внимательнее.
    • Автор:

      terrell
    • 5 лет назад
    • 0
  • А, все, вижу
    • Автор:

      gabriela
    • 5 лет назад
    • 0
  • ну тут явно нужно сортировкой делать
    • Автор:

      hazelpark
    • 5 лет назад
    • 0
  • Сортировкой, сортировкой, чем же ещё? Не делать же сто условий для четырёх переменных, как имбецилы-былокодеры.
  • Программа работает так , как ее запрограммировал программист, а не как он хотел.

    С процедурой swap нет проблем. Давайте рассмотрим алгоритм шаг за шагом.

    Вводятся 4 числа: 1,2,3,4

    a =  1; b = 2; c = 3; d = 4

    Далее программа делает 4 шага:

    1) a < b? (1 < 2)  => true (истина) => результат: 2134

    2) b < c? (1 < 3)  => true (истина) => результат: 2314

    3) d < a? (4 < 2)  => false (ложь) => результат: 2314

    4) a < d? (2 < 4)  => true (истина) => результат: 4312

    Каков итог? В самом синтаксисе ошибок никаких нет. Ошибка в вашем алгоритме.

    Что сделать? Исправить алгоритм

  • Не правильно находится самое максимальное число, рассматриваются не все варианты.

    Нужно изменить программу.

    var a, b, c, d: real;

    begin

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

    readln(a, b, c, d);

    // ищем максимальное число, заносим в а

    if (a < b) then swap(a, b);

    if (a < c) then swap(a, c);

    if (a < d) then swap(a, d);  

    // ищем максимальное из оставшихся, заносим в b

    if (b < c) then swap(b, c);

    if (b < d) then swap(b, d);

    // ищем максимальное из c и d

    if (c < d) then swap(c, d);

    writeln(a,' ', b,' ', c,' ', d)

    end.

    Введите четыре числа  

    15 25 13 19

    25 19 15 13

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years