Вопрос задан 07.08.2023 в 16:23. Предмет Информатика. Спрашивает Нечипоренко Богдан.

Написать программу в паскаль ABC, генератор чисел от 0 до 1 с 16 знаками после запятой(пример

0.0000000000000002) и записать эти данные в файл txt по возрастанию.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Завьялов Даниил.
Как то так, можно улучшить конечно, но числа генерируются в нужном интервале, если найду что получше, то перепешу

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.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример программы на языке Pascal ABC, который генерирует числа от 0 до 1 с 16 знаками после запятой и записывает их в файл txt по возрастанию:

pascal
program 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 и компилятор для выполнения этой программы.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос