profile
Размещено 5 лет назад по предмету Информатика от spycip

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

  1. Ответ на вопрос
    Ответ на вопрос дан danulpopov
    Как то так, можно улучшить конечно, но числа генерируются в нужном интервале, если найду что получше, то перепешу

    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.

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.