Приведен пример пройстейшей программы, в которой казалось бы все правильно написано. И ошибки нет. И программа работает, но результат не правильный. И заметить это не так просто, если эта программа фрагмент некоторого вычислительного процесса. Всем желающим предлагается найти причину не правильного результата. Обратите внимание, суммируются только положительные, а результат отрицательный. Да и величина результата явно не правильная.
Код программы
uses crt; var s,i: integer; begin s:=0; for i:=100 to 999 do s:=s+i; writeln(s); readln; end. Результат : -29738 |
2010-07-22 • Просмотров [ 1841 ]
Дело в том, что в процессе выполнения цикла переменная "s" принимает все большее и большее значение, и вскоре достигает значения, близкого к максимуму для типа "integer", но цикл не кончился и в следующей итерации значение переменной превысит допустимое значение и пойдет по следующему кругу значений данного типа.
Если изменить тип переменной "s" на более широкий, то результат будет правильный.