
Вопрос задан 07.08.2023 в 16:23.
Предмет Информатика.
Спрашивает Нечипоренко Богдан.
Написать программу в паскаль ABC, генератор чисел от 0 до 1 с 16 знаками после запятой(пример
0.0000000000000002) и записать эти данные в файл txt по возрастанию.

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

Отвечает Завьялов Даниил.
Как то так, можно улучшить конечно, но числа генерируются в нужном интервале, если найду что получше, то перепешу
var
a:array[1..1000] of real;
i,x, j:integer;
cur:real;
l:text;
label y;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i:= 1 to 999 do
begin
y:
cur := 0.96743612142/( random(24)+random(11)+random(7));
x:= random(100);
if x > 20 then
if cur < 0.4 then cur:= cur * random(5);
if (cur = 0) or (cur > 1)then goto y;
a[i]:=cur;
end;
for i:= 1 to 999 do
for j:= 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i:= 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.
================================================================
Улучшенная версия
var
a: array[1..1000] of real;
i, x, j: integer;
cur, tmp: real;
l: text;
label y, z;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i := 1 to 999 do
begin
y:
tmp := 1 - 1 / (random(33) + random(11) + random(7));
if tmp < 0.4 then goto y;
cur := tmp / abs(random(24) + random(11) - random(7));
if cur > 0.8 then
begin
x := random(10000);
if x < random(10000) then
begin
cur := cur / (1 - 1/(random(10) + random(11) + random(7))); end;
end;
x := random(100);
if x > 50 then
if cur < 0.5 then cur := cur * random(5);
if cur < 0.1 then
begin
x := random(10000);
if x < 7000 then
cur := cur * random(8);
end;
if cur > 0.8 then
cur:= cur - 1/(random(10) + random(11) + random(7)) - 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7));
if (cur = 0) or (cur > 1) then goto y;
a[i] := cur;
end;
for i := 1 to 999 do
for j := 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i := 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.
var
a:array[1..1000] of real;
i,x, j:integer;
cur:real;
l:text;
label y;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i:= 1 to 999 do
begin
y:
cur := 0.96743612142/( random(24)+random(11)+random(7));
x:= random(100);
if x > 20 then
if cur < 0.4 then cur:= cur * random(5);
if (cur = 0) or (cur > 1)then goto y;
a[i]:=cur;
end;
for i:= 1 to 999 do
for j:= 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i:= 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.
================================================================
Улучшенная версия
var
a: array[1..1000] of real;
i, x, j: integer;
cur, tmp: real;
l: text;
label y, z;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i := 1 to 999 do
begin
y:
tmp := 1 - 1 / (random(33) + random(11) + random(7));
if tmp < 0.4 then goto y;
cur := tmp / abs(random(24) + random(11) - random(7));
if cur > 0.8 then
begin
x := random(10000);
if x < random(10000) then
begin
cur := cur / (1 - 1/(random(10) + random(11) + random(7))); end;
end;
x := random(100);
if x > 50 then
if cur < 0.5 then cur := cur * random(5);
if cur < 0.1 then
begin
x := random(10000);
if x < 7000 then
cur := cur * random(8);
end;
if cur > 0.8 then
cur:= cur - 1/(random(10) + random(11) + random(7)) - 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7));
if (cur = 0) or (cur > 1) then goto y;
a[i] := cur;
end;
for i := 1 to 999 do
for j := 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i := 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Конечно, вот пример программы на языке Pascal ABC, который генерирует числа от 0 до 1 с 16 знаками после запятой и записывает их в файл txt по возрастанию:
pascalprogram NumberGenerator; uses SysUtils; var outputFile: Text; i: Integer; num: Double; begin Assign(outputFile, 'numbers.txt'); Rewrite(outputFile); Randomize; for i := 1 to 100 do // Генерируем 100 чисел begin num := Random; // Генерируем случайное число от 0 до 1 // Записываем число в файл с 16 знаками после запятой WriteLn(outputFile, Format('%.16f', [num])); end; Close(outputFile); Writeln('Генерация и запись чисел завершены.'); end.
Программа создаст файл "numbers.txt" в той же директории, где находится исполняемый файл программы. В этом файле будут записаны случайно сгенерированные числа от 0 до 1 с 16 знаками после запятой, отсортированные по возрастанию.
Пожалуйста, убедитесь, что у вас установлена среда Pascal ABC и компилятор для выполнения этой программы.


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