Нина Кукуева
Нина Кукуева

Помогите с задачей паскаль!

Юзер вводит N вещественных чисел. Число N не определено зараннее.
Выход из цыкла при нуле или 100. В цикле сумма всех целых пложительных чисел
Все делать через цыкл while.
Исправьте код программы плиз:
program zadacha4_2;
uses crt;
var s,n,t:integer;
begin
clrscr;
s:=0;
writeln('Программа для обработки чисел!');
writeln('--------------------------------------------------');
write('Введите числo:'); readln(n);

while (n<>0) and (n<>100) do begin
write('Введите числo:'); readln(n);
end;
if n mod 2=1 then s:=s+n;
Writeln ('Сумма =',s);
Writeln ('--------------------------------------------------');
Writeln ('Для завершения работы нажмите любую клавишу!');
Readkey;
End.

while (n<>0) and (n<>100) do begin
write('Введите числo:'); readln(n);
write('Введите числo:'); readln(n);
Writeln ('Сумма =',s);

когда n - integer, работает, а мне нужно real, а там не хочет.

Ольга
Ольга

тебе к училке по матешке надо идти она знает

АА
Андрей Абакумов

У вас цикл завершается раньше, чем начинает считатся сумма. Плюс считается, что суммируются четные, а не целые-положительные.

АК
Антон Кучеров

end надо поставить после if n mod 2=1 then s:=s+n;

ЕВ
Елизавета Виноградова

n - это же integer. Тебе надо определить, целое число или нет. А нецелые ты даже ввести не сможешь, потому что считываешь n, которое integer. А в условии сказано - юзер вводит вещественные числа.
Определи n:real;
И s тогда тоже real.
Как определить, целое n или нет? if (n - trunk(n))>0, то нецелое. Дальше сам.

ИИ
Игорь Игорь

Действительное число в компьютере может быть равно 0, но 100 — никогда!
Поэтому второе условие в условии должно быть не равенство 100, а приближение к нему.
Чтобы это проверить, можно сравнить абсолютную величину разницы со 100 и какой-то константой, меньше которой (по идее) числа не должны вводиться.
К примеру:

Abs(100 - N) < 0.00001

Теперь разбор твоей писанины:

— во-первых − лучше писать через цикл repeat … until

— во-вторых − у тебя вся работа программы происходит только с последним введённым числом, т. е. с 0 или 100
Так что твоя программа, хоть и работает, но ни чего не считает!

— ну и в-третьих − проверка на положительность чисел — далеко не остаток от деления на 2!

Похожие вопросы
Помогите с задачей в Паскале!
Помогите с задачей (Паскаль)
Помогите задача паскаль : )
помогите в задаче по паскалю
Задача паскаль! ПОМОГИТЕ
Помогите с задачей на паскале.
Помогите с задачей в паскале
помогите паскаль задача
Помогите с задачей по Паскалю
помогите с задачей по паскалю!