М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dfgfdgfd1
dfgfdgfd1
12.06.2020 23:33 •  Информатика

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

👇
Ответ:

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


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

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

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

4,5(3 оценок)
Ответ:
Violet17
Violet17
12.06.2020

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

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

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

4,8(69 оценок)
Открыть все ответы
Ответ:
TvoePolusladkoe
TvoePolusladkoe
12.06.2020
Максимальная цифра м.б. 9, значит сумма цифр не может быть больше 18
1) Сначала уберем из списка все возрастающие - 1619  316   916
    останется 1616  169   163  1916   116
2) Из этого списка удалим также 1916, т.к 19 не может быть (сумма цифр макс 18)
Останется 1616   169   163   116
3) Рассмотрим, все ли числа могли получится, как результат сложения
  1616 могло получится, если число, например, 888. Значит его оставляем
  169   -  например, 972 или 881. Значит, тоже подходит
  163 - 16 может получиться как сумма 8+8  7+9, но тогда мы не получим 3.       Т.е. это число не подходит - удаляем
   116 - это, например, 560, 651, т.е подходит
Значит осталось 1616, 169,  116
ответ: 3
4,6(34 оценок)
Ответ:
Каркушааа
Каркушааа
12.06.2020
В большинстве универсальных языков программирования оператор выбора следует использовать в тех случаях, когда в алгоритме имеется несколько веток и выбор той или иной ветки зависит от конкретного значения (или набора значений) некоторой переменной, называемой также переключателем. Это в равной степени относится и к оператору Case в Паскале, и к оператору Switch в С/С++. В языках семейства BASIC/VB оператор выбора Select Case позволяет в качестве набора значений задавать не только значения или их наборы, но также и логические выражения, что существенно раздвигает границы использования оператора выбора. Но во всех случаях вычисление значений производится для одной единственной переменной - переключателя. Но бывают и исключения. Так, оператор выбора во входном языке СУБД семейства xBASE (например, VFP), позволяет в каждой ветке писать не связанные с предыдущими ветками логические выражения, что дает возможность компактно записывать сложнейшие наборы условий.
4,6(17 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ