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

Ответы на вопрос

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.
Тестовое решение в прикрепленном файле




Для выполнения данной задачи на языке Pascal ABC, вам понадобится создать программу, которая выполнит следующие шаги:
1. Генерация файла с 650 случайными целыми числами, лежащими в указанных интервалах. 2. Вывод всех данных на экран. 3. Вывод всех четырёхзначных чисел, взаимно простых с соседними числами. 4. Найти наибольшее число с хотя бы одной единицей в записи.
Ниже приведён пример кода на Pascal ABC, выполняющий эти действия:
```pascal program RandomNumberFile;
var i, num, prevNum, nextNum, maxWithOne: integer; randomFile: text;
function IsPrime(n: integer): boolean; var i: integer; begin if n <= 1 then IsPrime := False else if n <= 3 then IsPrime := True else if (n mod 2 = 0) or (n mod 3 = 0) then IsPrime := False else begin i := 5; while (i * i <= n) do begin if (n mod i = 0) or (n mod (i + 2) = 0) then begin IsPrime := False; exit; end; i := i + 6; end; IsPrime := True; end; end;
begin randomize; assign(randomFile, 'random_numbers.txt'); rewrite(randomFile);
maxWithOne := -1;
for i := 1 to 650 do begin num := Random(15000 - 135 + 1) + 135; if (num >= 4578) and (num <= 15000) then begin writeln(randomFile, num);
if (num >= 1000) and (num < 10000) then begin prevNum := num div 10; nextNum := num mod 1000;
if IsPrime(prevNum) and IsPrime(nextNum) then writeln('Четырёхзначное взаимно простое число: ', num); end;
if (num >= 1000) and (num < 10000) and (pos('1', IntToStr(num)) > 0) then if num > maxWithOne then maxWithOne := num; end; end;
close(randomFile);
writeln('Наибольшее число с 1 в записи: ', maxWithOne);
readln; end. ```
Этот код создаст файл 'random_numbers.txt' с 650 случайными числами, выполнит необходимые проверки и выведет результаты на экран.


Похожие вопросы

Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili