IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Программа с процентами
murmanskk
сообщение 5.03.2013 14:22
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Привет. Помогите разобраться.

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.


Я пробовал сделать так но у меня не вышло..
Спойлер (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ромаха
сообщение 5.03.2013 15:05
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Роман

Репутация: -  0  +


if (myans = ans) or (myans-1 = ans) or (myans+1 = ans) then
             WriteLn ('Правильно')
else
             WriteLn ('Неправильно')

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
murmanskk
сообщение 5.03.2013 15:09
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Не получается так..
Если ответ целое число например 25 то нормально, а если в ответе не целое 33.33.. (например при исходных данных 10 и 20) то пишет всегда "НЕПРАВИЛЬНО" какое бы число не ввести в ответе.

Сообщение отредактировано: murmanskk - 5.03.2013 15:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 5.03.2013 15:36
Сообщение #4


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Вещественные числа (а они в этой программе все вещественные) не сравниваются оператором "=", только Abs(Value1 - Value2) < Eps.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
murmanskk
сообщение 6.03.2013 21:02
Сообщение #5





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 5.03.2013 15:36) *

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

А нельзя это как нить на практике продемонстрировать?)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 7.03.2013 12:48
Сообщение #6


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Конструкцию
Цитата
if (myans = ans) then
заменить на

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

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


В более продвинутых компиляторах (например, FPC) используется функция SameValue из модуля Math, которая примерно это и делает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
murmanskk
сообщение 10.03.2013 11:59
Сообщение #7





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 28.07.2025 18:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"