Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа с процентами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
murmanskk
Привет. Помогите разобраться.

myans - это ответ который ввожу Я. ( число)
ans - это верный ответ.

Нужно их сравнить, если myans= ans ИЛИ myans <на1 ИЛИ >на1 = Вывести "Правильно"
В других случаях: <на2 ИЛИ >на2 вывести "Неправильно".

Код
Program prog1;

Var num1, num2, myans, ans:real;
i:integer;

begin

for  i:=1 to 100 do begin
Write('a: ');
Read(num1);
Write('b: ');
Read(num2);

ans:=num1/(num1+num2)*100;

Writeln('-' ); read(myans);

writeln(ans);


end;
end.


Я пробовал сделать так но у меня не вышло..
Спойлер (Показать/Скрыть)
Ромаха
if (myans = ans) or (myans-1 = ans) or (myans+1 = ans) then
             WriteLn ('Правильно')
else
             WriteLn ('Неправильно')

murmanskk
Не получается так..
Если ответ целое число например 25 то нормально, а если в ответе не целое 33.33.. (например при исходных данных 10 и 20) то пишет всегда "НЕПРАВИЛЬНО" какое бы число не ввести в ответе.
IUnknown
Вещественные числа (а они в этой программе все вещественные) не сравниваются оператором "=", только Abs(Value1 - Value2) < Eps.
murmanskk
Цитата(IUnknown @ 5.03.2013 15:36) *

Вещественные числа (а они в этой программе все вещественные) не сравниваются оператором "=", только Abs(Value1 - Value2) < Eps.

А нельзя это как нить на практике продемонстрировать?)
IUnknown
Конструкцию
Цитата
if (myans = ans) then
заменить на

const 
   eps = 0.0001; { Если 2 числа будут отличаться больше, чем на eps - они будут считаться разными }

{ ... }
if Abs(myans - ans) < Eps then
   { модуль разности чисел не превышает eps, значит, можно считать что myans = ans }


В более продвинутых компиляторах (например, FPC) используется функция SameValue из модуля Math, которая примерно это и делает.
murmanskk
спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.