Циклы!Решение вTurbo Pascal!

0 голосов
67 просмотров

Циклы!Решение вTurbo Pascal!


image
image

Информатика (79 баллов) | 67 просмотров
0

Не понимаю я учебные заведения, обучающие на версии языка (и в среде программирования), которую разработчик не поддерживает с 1995 года (т.е. больше 20 лет!)

Дан 1 ответ
0 голосов
Правильный ответ

//Скучно
//Pascal ABC.NET 3.1 сборка 1219

//57
Var
 x,k:integer;
begin
readln(x);
k:=0;
while x<>0 do
 begin
  if x mod 2=0 then k:=k+1;
  readln(x);
 end;
writeln(k);
end.

{А вот это интересно исключительно благодаря тому, что выдаёт компилятор в процессе}
//67
Var
 x,y:real;
 i:integer;
begin
 x:=-1;
 i:=0;
 while x<=1 do<br>  begin
   y:=power(x,3);
   writeln('f(',x,')=',y);
   x:=-1;
   i:=i+1;
   x:=x+i*0.1;
  end;
end.

(38.6k баллов)
0

Вот, к примеру, с шагом 0.5, 0.25, 0.125 и т.д. можно хоть миллионы раз наращивать сложением числа вида 0.5, 0.25, 0.125,... - точность не потеряется.

0

И теперь я ушёл учить матчасть чтобы полностью осознать вышенаписанное. Благодарю.

0

Кстати, весьма полезно освежить это в памяти, ибо на самом деле Вы не могли этого не учить когда-то - оно в школьной программе.

0

Так, с 0.1 понял. Её мантисса равна 0, а такой суммы 1/2^n просто не может быть. Но в таком случае число 1, 10, 100 так же вылетают.

0

С плавающей точкой если - увы, да. потому что они в нормализованном виде идут, мантисса по модулю на интервале [0;1)

0

Т.е. 1 - это 0.1х10^1, 100 - это 0.1x10^3

0

Но мы должны помнить, что не все совсем трагично, потому что ошибки округления работают в обе стороны. Но всегда лучше умножить на n, чем n раз сложить.

0

"Так, с 0.1 понял. Её мантисса равна 0," - нет, мантисса равна нулю у нуля. У 0.1 равен нулю ПОРЯДОК

0

Десятичная мантисса у 0.1, 0.01, 0.00001, 1, 10 и 10000000 равна 0.1. А двоичная - она тоже одинакова, но представляется округленно в машинном виде.

0

Посмотрите понятие нормализованного числа. В двоичном виде мантисса нормализована, если её старший бит единичный.