Cümə, 09.12.2016, 20:27
İnformatikanın məktəbdə tədrisi
Baş səhifə Qeydiyyat Giriş
e-mail: informatik-az@mail.ru · RSS
Menyu
Fotoşəkillər
Giriş forması
Sorğu
Müəllim kimi informatika dərslərində tez-tez istifadə edirəm:
Cavabların sayı: 6163
Faydalı keçidlər

  • ict.edu.az
  • ict.az
  • telekommunikasiya.edu.az
  • İnf-math.narod.ru
  • Millibyte.az
  • kayzen.az/blog/informatika
  • alqoritm.ucoz.org
  • mincom.gov.az
  • Facebook-da
    Təqvim
    «  Dekabr 2016  »
    B.e.Ç.a.ÇC.a.CŞB
       1234
    567891011
    12131415161718
    19202122232425
    262728293031
    Təqdimatlar
    Saat
    Statistika

    Onlayn: 13
    Ziyarətçilərin sayı: 13
    Qeydiyyatdan keçənlərin sayı: 0


     2-22r
    Факториалом числа  n называется произведение чисел от 1 до n  (n! = 1.2.3. … .n). ( По определению 0! = 1, 1! = 1) Для заданного n вычислить  n!. До какого значения n мы получим правильный результат?

    По идее, это совсем простая задача: взять f:=1; и затем умножать f  на 2, 3 и так далее до n. Эти действия и выполняются в цикле в строках 8, 9. В этой задаче интересно другое. Значение n! растет очень быстро. Так, если мы объявили f:integer; (строка 4), то мы можем получить правильный результат только до  n=12. При n=13 результат превосходит максимальное значение для integer (2147483647). Если же мы объявим f:Int64; ( не забудьте, это в Free Pascal, а   в  C++ long long f;), то правильный результат мы получим до n=20. 
    Правда, если мы не хотим получить много верных цифр, то можно объявить f:double; Тогда можно вычислить n! до значения n=170, но с 15 верными первыми цифрами (а всего цифр в числе будет 307). 
    Можно объявить f:extended;  (в C++ long double f;), тогда можно вычислить n! до значения n=1754, но с 17 верными первыми цифрами (а всего цифр в числе будет 4931).
    Примечание. Для проверить правильности результатов  работы программы можно воспользоваться калькулятором в Windows.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    Program A2_22;

    Var

     n,i:integer;

       f:integer;

    BEGIN

      readln(n);

      f:=1;

      for i:=2 to n do

        f:=f*i;

      writeln(f);

      readln;

    END.

    //Program A2.22;

    #include <iostream>

     

    using namespace std;

     

    int main()

    {  int n,i;

        int f=1;

        cin>>n;

        for(i=2;i<=n;i++)

             f=f*i;

        cout << f << endl;

        return 0;

    }





























    Copyright İsaNaida © 2016
    PYTHON 3.4
    ALPLogo
    Elan
    Fəxr edirik


    Bölmələr
    MÜSABİQƏ
    Azərbaycanda İKT
    Axtarış
    Video
    Info-Ko