Создать файл из 650 целых чисел, лежащих на отрезке [135,4000]U[4578, 15000], используя генератор случайных чисел.(Pascal ABC) -
Создать файл из 650 целых чисел, лежащих на отрезке [135,4000]U[4578, 15000], используя генератор случайных чисел.<span>(Pascal ABC)</span> -Вывести все данные на экран. -Вывести все четырехзначные числа, взаимно простые с своими соседями. -Найти наибольшее среди чисел, которое имеет в своей записи хотя бы одну 1.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 const k=650;
function GetData(f:file of integer):integer; // получить из файла очередное значение begin if not f.Eof then Read(f,Result) else Result:=0 end;
function NOD(a,b:integer):integer; // нахождение НОД begin while b>0 do (a,b):=(b,a mod b); Result:=a end;
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.Close end.
<u><em>Тестовое решение в прикрепленном файле </em></u>
begin readln(a); {Тут мы вводим число, которое будем проверять: делится оно на три или нет} s := 0; {это у нас будет сумма цифр числа } while a<>0 do begin b := a mod 10; {выделяем последнюю цифру} s := s + b; {находим сумму} a := a div 10 {переходим к следующей цифре} end; if s mod 3 = 0 then {ну а вот тут, как раз, проверяем} writeln('число делится на три') else writeln('число не делится на три') end.