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

Почему программка выдает 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 lt; b) then swap(a, b);
if (b lt; c) then swap(b, c);
if (d lt; a) then swap(d, a);
if (a lt; d) then swap(a, d);
writeln(a, b, c, d)
end.

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

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

Задать свой вопрос
Тамара Гремина
Поэтому что четыре перестановки недостаточно для сортировки 4 чисел. В чистом размене таких перестановок требуется до 6, в размене со слиянием - до 5.
2 ответа

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

Необходимо поменять программу.

var a, b, c, d: real;

begin

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

readln(a, b, c, d);

// отыскиваем наибольшее число, заносим в а

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

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

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

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

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

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

// разыскиваем наибольшее из c и d

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

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

end.

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

15 25 13 19

25 19 15 13


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


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

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

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

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

1) a lt; b? (1 lt; 2)  =gt; true (правда) =gt; результат: 2134

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

3) d lt; a? (4 lt; 2)  =gt; false (ересь) =gt; итог: 2314

4) a lt; d? (2 lt; 4)  =gt; true (правда) =gt; итог: 4312

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

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

Женек Ализайа
Пузырёк не такая уж и эффективная сортировка
Василий Межонков
задачи написать сортировку не стояло
Дарина Наржимская
Задания вообщем тут нет, только код и вопрос
Камилла Лейтан
А, все, вижу
Безгодько Степан
ну здесь явно нужно сортировкой делать
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт