Вопрос задан 25.07.2023 в 02:01. Предмет Информатика. Спрашивает Смирнов Евгений.

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

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Голованова Полина.

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

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

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


0 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

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

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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В предоставленной программе ошибка заключается в неправильном порядке выполнения обменов чисел в процедуре swap. В результате обменов чисел в неправильном порядке, программа выводит неверный результат.

Для того чтобы переставить 4 числа в порядке убывания, вам необходимо выполнить обмены в следующем порядке:

  1. Найти наибольшее число среди a, b, c, d и поместить его на первое место (переменную a).
  2. Затем найти второе по величине число из оставшихся трех чисел и поместить его на второе место (переменную b).
  3. Затем найти третье по величине число и поместить его на третье место (переменную c).
  4. Наименьшее число поместить на четвертое место (переменную d).

Исправим программу:

pascal
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 (a < c) then swap(a, c); if (a < d) then swap(a, d); if (b < c) then swap(b, c); if (b < d) then swap(b, d); if (c < d) then swap(c, d); writeln(a, b, c, d); end.

Теперь программа должна корректно переставить 4 числа в порядке убывания и вывести правильный результат.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос