Программирование на Атлантисе (VIP, FCOM, ARD), FastReport
Модераторы: m0p3e , edward_K , Модераторы
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 20 янв 2012, 08:26
Код: Выделить всё
var i,c word;
begin
i:=0;
c:=0;
for.. {
i:=i+1;
c:=c+1;
}
// i=>5
// c=>5
if(i<>с)
message('Не равно');//!!!!!
else
message('Равно');
end;
Почему числа не равны?
Последний раз редактировалось
n0where 20 янв 2012, 09:52, всего редактировалось 1 раз.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
KATZ
Местный житель
Сообщения: 473 Зарегистрирован: 29 мар 2005, 17:49
Сообщение
KATZ » 20 янв 2012, 09:06
Как переменные i и c описаны?
P. S. Это типа задачка с конкурса начинающих программистов?
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 20 янв 2012, 09:53
Как переменные i и c описаны?
Как то делал на double, сейчас проблема и с word
P. S. Это типа задачка с конкурса начинающих программистов?
Ну попробуйте так подумать
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Алексей
Местный житель
Сообщения: 2896 Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область
Сообщение
Алексей » 20 янв 2012, 10:21
с double проблемы будут, с вордом не должно возникнуть
я 2 дабл сравниваю обычно как разница между ними по модулю и сравниваю с точностю которая мне нужна
if abs(a-b)<0.001 к примеру...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 20 янв 2012, 10:36
раскрытие что скрывается под for.. вам поможет.
Обычно там как раз i используют
Более сложный вариант - это когда переменная дважды объявлена в разных областях - глобальной и в локальной. Тогда где то используется глобальный(в message или if например), а где то локальный индетификатор - в этом случае поможет тока правило объявления локальных индетификаторов. Я стараюсь использовать либо ii либо ww_???? для более сложных названий.
n0where
Местный житель
Сообщения: 499 Зарегистрирован: 30 дек 2010, 08:16
Сообщение
n0where » 20 янв 2012, 14:07
раскрытие что скрывается под for.. вам поможет.
Да нет, там обычный цикл при котором увеличивается значение этих переменных.
Более сложный вариант - это когда переменная дважды объявлена в разных областях - глобальной и в локальной.
Нет такого нет. Но обычно я для функций делаю локальные переменные везде одни.
Хотите сказать таких ситуаций не возникало?
У меня уже в 2х проектах такая фигня. приходится переводить в string и сравнивать строки.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 20 янв 2012, 15:31
n0where писал(а): У меня уже в 2х проектах такая фигня. приходится переводить в string и сравнивать строки.
это как раз и говорит о пересечении с глобальными переменными. Попробуйте здесь изменить их имена.
KATZ
Местный житель
Сообщения: 473 Зарегистрирован: 29 мар 2005, 17:49
Сообщение
KATZ » 20 янв 2012, 15:34
n0where писал(а): Хотите сказать таких ситуаций не возникало?
Таких - нет.
К сообщению "Не равно" добавьте вывод значений. Возможно, когда увидите сравниваемые числа, сразу же причину поймете.
А лучше выложите весь код. В той части, которая опубликована, проблема не видна.