profile
Размещено 5 лет назад по предмету Информатика от jioo568

Почему программа выдает 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 числа в порядке убывания.

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

  1. Ответ на вопрос
    Ответ на вопрос дан StrangeStud

    Программа работает так , как ее запрограммировал программист, а не как он хотел.


    С процедурой 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

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

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

    1. Ответ на вопрос
      Ответ на вопрос дан StrangeStud
      Задания вообще здесь нет, только код и вопрос
    2. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Читай внимательнее.
    3. Ответ на вопрос
      Ответ на вопрос дан StrangeStud
      А, все, вижу
    4. Ответ на вопрос
      Ответ на вопрос дан StrangeStud
      ну тут явно нужно сортировкой делать
    5. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Сортировкой, сортировкой, чем же ещё? Не делать же сто условий для четырёх переменных, как имбецилы-былокодеры.
  2. Ответ на вопрос
    Ответ на вопрос дан srzontmp

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

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

    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


Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.