Хотел бы предостеречь Вас ещё об одной потенциальной трудноуловимой ошибке.
Дмитрий Келлерман писал(а):
Код:
for(i=-3.0;i<=2.7;i+=0.3)
Дело в том, что компьютер работает с двоичным представлением дробных чисел, а числа 2.7 и 0.3 не могут быть точно представлены в виде конечной двоичной дроби. Поэтому будет производиться округление (в большую либо меньшую сторону), в результате чего у Вас в 20-й итерации может получиться вместо 2.7 чуть большее число, и последняя итерация не выполнится.
Произойдёт это или нет, может зависеть от нескольких факторов: типа переменной i, опций компилятора, самого компилятора, аппаратных особенностей целевой ЭВМ. В отладочной версии может быть всё нормально, а в оптимизированной --- глючить. Поэтому не рекомендуется сравнивать два вещественных числа, а переменную цикла лучше всегда делать целой (например, j от -30 до 27 с шагом 3, а в вычислениях использовать значение j/10).