Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 20:58   #1
Uniastrum
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию Ошибка в коде. Работа с последовательностями чисел (Pascal)

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

Само задание:
Найти максимальное значения в последовательности вводимых чисел. При поиске пропускать числа из диапазона от 10.1 до 50.1.
Остановить обработку при вооде заданного кол-ва чисел.
Тип обрабатываемых данных :веществ.

Код:
PROGRAM N3
VAR
N, i :integer;
A, Max :real;
Label vvod, prov;
BEGIN
vvod: writeln ('Сколько будет чисел?')
readln (N);
if N<1 then
begin
writeln ('Нельзя анализировать менее 1 числа')
goto vvod
end;
Max :=-1e30;
for i:=1 to N do
BEGIN
writeln ('Введите очередное число <10.1 и >50.1');
readln (A);
if (A<10.1) or (A>50.1) then
if A>Max then
Max :=A;
end;
if Max
writeln ('Максимальное значение=') , Max:10:2);
else
if (Max :=-1e30)
writeln ('Подходящих чисел нет');
END
То неправильно показывает максимальное значение, то не пишет, что нет подходящих чисел( Уж и не знаю, что делать!
Uniastrum вне форума Ответить с цитированием
Старый 28.11.2012, 09:50   #2
Александр Павлович
Пользователь
 
Аватар для Александр Павлович
 
Регистрация: 25.11.2012
Сообщений: 13
По умолчанию

Ваш текст не будет компилироваться. Попробовал поправить по минимуму:
Код:
PROGRAM N3
VAR
N, i :integer;
A, Max :real;
Label vvod, prov;
BEGIN
vvod: writeln ('Сколько будет чисел?')
readln (N);
if N<1 then begin
writeln ('Нельзя анализировать менее 1 числа')
goto vvod
end;{if}
Max :=-1e30;
for i:=1 to N do BEGIN
writeln ('Введите очередное число <10.1 и >50.1');
readln (A);
if (A<10.1) or (A>50.1) 
then if A>Max then Max :=A;
end;{for}
if Max>1e-30 
then writeln ('Максимальное значение=') , Max:10:2);
else writeln ('Подходящих чисел нет');
END.
С глубоким уважением,
Александр
Александр Павлович вне форума Ответить с цитированием
Старый 28.11.2012, 13:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вместо метки vvod и команды goto я бы рекомендовал использовать цикл repeat .. until:

Код:
var
  N, i :integer;
  A, Max :real;
begin
  repeat
    writeln('Сколько будет чисел?');
    readln(N);
    if N < 1 then
      writeln('Нельзя анализировать менее 1 числа');
  until N >= 1;
....
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В моем коде ошибка. Задача:вывод простых чисел (С++). Код с моим комментарием прилагается. Eshiru Помощь студентам 23 27.11.2012 17:32
Работа с массивами и псевдослучайными последовательностями (Pascal). Задача YkkRolex Помощь студентам 0 31.10.2012 08:20