- Код: Выделить всё
- program Project1;
 {$mode objfpc}{$H+}
 var Y: Real;
 i:Integer;
 begin
 Y:=0;
 while Y<1 do
 begin
 Y:=Y+0.1;
 Writeln('Y=',Y:1:2);
 end;
 Readln;
 end.
То есть цикл не прекращается при Y=1, а прекращается при Y=1.01. При выполнении выше указанного условия, но с Y<2 или Y<3, цикл прекращается при Y=2 или Y=3 соответственно.
Подобная проблема и со следующей конструкцией:
- Код: Выделить всё
- program Project1;
 {$mode objfpc}{$H+}
 var Y: Real;
 i:Integer;
 begin
 Y:=0;
 for i:=1 to 20 do
 begin
 Y:=Y+0.1;
 if Y=1.0 then Y:=0;
 Writeln('Y=',Y:1:2);
 end;
 Readln;
 end.
То есть не выполняется условие в цикле (при Y=1 переменная Y должна принять значение Y=0). Необходимо выполнение условие равенства.
Как можно решить данную проблему?



 .
 . .
 .

 
 