В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
54st
54st
02.05.2022 05:14 •  Информатика

Какое число будет выведено на экран после выполнения этого фрагмента программы? нц для i от 3 до 1 шаг -1 вывод i кц

Показать ответ
Ответ:
Tiinker7
Tiinker7
26.06.2020 22:39
В зависимости от версии компилятора языка Паскаль, вещественные числа по умолчанию выводятся в различном виде. Например, Турбо (Borland) Паскаль выводит их в "научном" представлении, т.е. в виде мантиссы, содержащей один разряд до запятой и десятичного порядка. PascalABC.Net, если может, выводит такие числа в виде привычной десятичной дроби.
В приведенном ниже примере значение 4.03099999999977E+0001 читается следующим образом: 4.030999...977\cdot10^1\approx40,31.
Для того, чтобы получать вывод в "привычном" виде, можно использовать форматирование. Для этого, в операторе вывода после значения переменной указывается конструкция вида m:n, где m- общее количество позиций, отводимое под запись числа (если 0 - то количество позиций определяется автоматически так, чтобы число поместилось), а n- количество позиций, отводимое под дробную часть.
Такая запись может применяться как для общего описателя типа вещественных чисел real, так и для конкретного (например, double - чисел "двойной точности", т.е. восьмибайтных). В примере хорошо видно, как использование двойной точности отражается на выводе результата в "научном" формате .

Пример на Турбо Паскаль
{$G+,N+}
uses Crt;

procedure Sum1(a,b,c,d:real;var r:real);
begin
  r:=a+b+c+d
end;

procedure Sum2(a,b,c,d:double;var r:double);
begin
  r:=a+b+c+d
end;

var
  e,f,g,h,res1:real;
  p,q,r,s,res2:double;
begin
  ClrScr;
  Write('e f g h= '); Read(e,f,g,h);
  Sum1(e,f,g,h,res1);
  Writeln('res1= ',res1,' = ',res1:0:2);
  Write('p q r s= '); Read(p,q,r,s);
  Sum2(p,q,r,s,res2);
  Writeln('res2= ',res2,' = ',res2:0:2);
  ReadKey
end.

Тестовое решение:
e f g h= 12.74 24.17 -5.6 9
res1=  4.03099999999977E+0001 = 40.31
p q r s= 12.74 24.17 -5.6 9
res2=  4.03100000000000E+0001 = 40.31
0,0(0 оценок)
Ответ:
Женечка5551
Женечка5551
13.04.2022 14:22
Программа в системе PascalABC.Net (время выполнения около 2с)
var
  n1,n2,n3:int64;

function IsPrime(n:Int64):Boolean;
var
  p:Int64;
  found:Boolean;
begin
  case n of
  1:Isprime:=False;
  2:IsPrime:=True;
  else begin
    found:= (n Mod 2 = 0);
    p:=3;
    while (not found) and (sqr(p)<=n) do
      begin found:=(n Mod p = 0); p:=p+2 end;
    IsPrime:=(not found) or (p = 2)
    end
  end
end;

procedure Fib();
begin
  n3:=n1+n2; n1:=n2; n2:=n3
end;
 
var
  i,k:integer;
begin
  n1:=0; n2:=1; k:=0;
  Writeln('Простые среди первых 45 чисел Фибоначчи');
  for i:=3 to 45 do
  begin
    Fib; if IsPrime(n3) then begin Write(n3,' '); Inc(k) end
  end;
  Writeln(#13#10,'Найдено простых чисел: ',k)
end.
   
Результат выполнения программы:
Простые среди первых 45 чисел Фибоначчи
2 3 5 13 89 233 1597 28657 514229 433494437
Найдено простых чисел: 10
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота