Бумер Опубликовано 21 августа, 2006 Жалоба Поделиться Опубликовано 21 августа, 2006 Вот код: ║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. Что я делаю неправильно Зы: извините за ламмерский вопрос (я думаю, что на такие проги вы не тратите времени) Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 21 августа, 2006 Жалоба Поделиться Опубликовано 21 августа, 2006 Во-первых, чтобы после введения последнего числа ты не вылетал на редактирование кода - поставь в конце программы readln, тогда программа выведет результат, и будет ждать пока ты не нажмешь Enter. Во-вторых, когда ты копировал код нахождения минимума, чтобы сделать из него код нахождения максимума - ты поменял имя переменной, но не поменял в условии знак ">" на "<". Т.о. оба цикла ищут минимум. Разность двух одинаковых чисел дает, естественно, 0. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ramzes_ Опубликовано 21 августа, 2006 Жалоба Поделиться Опубликовано 21 августа, 2006 Во-первых не if max>a[i] then max:=a[i]; а if max<a[i] then max:=a[i]; Во-вторых, начальные значения min и max присваивай не 0, а a[1], и цикл соответственно, начинай с 2. Так будет грамотнее. Ссылка на комментарий Поделиться на другие сайты Поделиться
StrangeRRor Опубликовано 21 августа, 2006 Жалоба Поделиться Опубликовано 21 августа, 2006 Я бы сделал так: ║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. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ramzes_ Опубликовано 22 августа, 2006 Жалоба Поделиться Опубликовано 22 августа, 2006 Забыл, в третьих, сравнивание здесь безо всякого ущерба можно проводить в одном цикле, тогда программа не будет производить лишних вычислений. Лучше с самого начала привыкать программировать грамотно. StrangeRRor И еще раз… Если инициализировать min и max нулем, то работать это не будет. Если начальные значения и делать константами, то только системными, в которых хранится минимальное и максимальное значение для данного типа данных, и то, я бы так делать не стал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 22 августа, 2006 Жалоба Поделиться Опубликовано 22 августа, 2006 (изменено) Дополнительно к замечаниям Ramzes'а, присваивание o:=0 совершенно излишне. И, просто в порядке комментария, использование массива тут имеет смысл только для того, чтобы увидеть, что массивы в Pascal действительно существуют. Но программа (в варианте StrangeRRor с поправками Ramzes'а) будет работать точно так же, если a везде заменить на просто a (а тогда надо определить, конечно, не как массив, а как обычную переменную). Изменено 22 августа, 2006 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 22 августа, 2006 Жалоба Поделиться Опубликовано 22 августа, 2006 Бумер: a:array[1..5] of integer замени на word или dword - работать будет быстрее, там разные алгоритмы применяются ....если это конечно BP 7.0/7.1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти