Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Почему прога не работает?


Рекомендуемые сообщения

Вот код:

 ║program maxminusmin;║var║ a:array[1..5] of integer;║ min,max,o,i: integer;║║begin║ writeln ('vvedi 5 chisel');║ for i:=1 to 5 do readln(a[i]);║ max:=0;║ for i:=1 to 5 do║  if max>a[i] then max:=a[i];║ min:=0;║ for i:=1 to 5 do║  if min>a[i] then min:=a[i];║ o:=0;║ o:=max-min;║ write ('max-min=');║ writeln (o);║end.

Почему программа при тестировании при любых значениях ничего не выдает, вернее выдает ноль.

Запускаю прогу, она выдает (введите пять чисел)

затем ввожу пять чисел и паскаль опять возвращается к редактированию кода. Если второй раз запустить прогу, то в конце первого тестирования независимо от введенных цифр max-min=0. Что я делаю неправильно

Зы: извините за ламмерский вопрос (я думаю, что на такие проги вы не тратите времени)

Ссылка на комментарий
Поделиться на другие сайты

Во-первых, чтобы после введения последнего числа ты не вылетал на редактирование кода - поставь в конце программы readln, тогда программа выведет результат, и будет ждать пока ты не нажмешь Enter.

Во-вторых, когда ты копировал код нахождения минимума, чтобы сделать из него код нахождения максимума - ты поменял имя переменной, но не поменял в условии знак ">" на "<". Т.о. оба цикла ищут минимум. Разность двух одинаковых чисел дает, естественно, 0.

Ссылка на комментарий
Поделиться на другие сайты

Во-первых не

if max>a[i] then max:=a[i];

а

if max<a[i] then max:=a[i];

Во-вторых, начальные значения min и max присваивай не 0, а a[1], и цикл соответственно, начинай с 2. Так будет грамотнее.

Ссылка на комментарий
Поделиться на другие сайты

Я бы сделал так:

 ║program maxminusmin;║var║ a:array[1..5] of integer;║ min,max,o,i: integer;║║begin║ max:=0;║ min:=0;║ o:=0;║ writeln ('vvedi 5 chisel');║ for i:=1 to 5 do║   begin║	 readln(a[i]);║	 if a[i]>max then max:=a[i];║	 if a[i]<min then min:=a[i]║   end;║ o:=max-min;║ write ('max-min=',o);║end.
Ссылка на комментарий
Поделиться на другие сайты

Забыл, в третьих, сравнивание здесь безо всякого ущерба можно проводить в одном цикле, тогда программа не будет производить лишних вычислений. Лучше с самого начала привыкать программировать грамотно.

StrangeRRor

И еще раз… Если инициализировать min и max нулем, то работать это не будет. Если начальные значения и делать константами, то только системными, в которых хранится минимальное и максимальное значение для данного типа данных, и то, я бы так делать не стал.

Ссылка на комментарий
Поделиться на другие сайты

Дополнительно к замечаниям Ramzes'а, присваивание o:=0 совершенно излишне. И, просто в порядке комментария, использование массива тут имеет смысл только для того, чтобы увидеть, что массивы в Pascal действительно существуют. Но программа (в варианте StrangeRRor с поправками Ramzes'а) будет работать точно так же, если a везде заменить на просто a (а тогда надо определить, конечно, не как массив, а как обычную переменную).

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Бумер:

a:array[1..5] of integer

замени на word или dword - работать будет быстрее, там разные алгоритмы применяются ....если это конечно BP 7.0/7.1

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...