• Создать файл из 650 целых чисел, лежащих на отрезке [135,4000]U[4578, 15000], используя генератор случайных чисел.(Pascal ABC)
    -Вывести все данные на экран.
    -Вывести все четырехзначные числа, взаимно простые с своими соседями.
    -Найти наибольшее среди чисел, которое имеет в своей записи хотя бы одну 1. 

Ответы 1

  • // PascalABC.NET 3.1, сборка 1250 от 28.05.2016const  k=650;  function GetData(f:file of integer):integer;// получить из файла очередное значениеbegin  if not f.Eof then Read(f,Result)  else Result:=0end;function NOD(a,b:integer):integer;// нахождение НОДbegin  while b>0 do (a,b):=(b,a mod b);  Result:=aend;function VZP(a,b:integer):boolean;// являются ли a и b взаимно простыми?begin  Result:=NOD(a,b)=1;end;function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);begin  var f:file of integer;  // создаем файл  Assign(f,'F.dat'); Rewrite(f);  var n:integer;  for var i:=1 to k do begin    n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000));    f.Write(n);    end;  f.Close;  // файл создан, начинаем его читать и обрабатывать  Reset(f);  Writeln('Задание 1');  while not f.Eof do begin n:=GetData(f); Print(n); end;  Writeln(NewLine,'Задание 2');  f.Seek(0);  var a:=GetData(f);  var b:=GetData(f);  var c:integer;  var VZPLeft:=VZP(a,b);  var VZPRight:boolean;  if VZPLeft then Print(a);  for var i:=3 to k-1 do begin    c:=GetData(f);    VZPRight:=VZP(b,c);    if VZPLeft and VZPRight then Print(b);    (a,b):=(b,c); VZPleft:=VZPRight    end;  c:=GetData(f);  if VZP(b,c) then Print(b,c);  Writeln(NewLine,'Задание 3');  f.Seek(0);  var mx:=0;  while not f.Eof do begin    a:=GetData(f);    if Has1(a) then mx:=Max(mx,a)    end;  if mx>0 then Writeln(mx);  f.Closeend.Тестовое решение в прикрепленном файле
    answer img
    • Автор:

      nikolas
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years