Попередня
Зміст
Наступна
Тема 18. Рiзнi задачi
Теорія

 

    Задача 18.4.1. Визначити скiльки цифр маї задане цiле число.

    program kilk_cifr;
    var n,x:integer;
    d:longint;
    begin
      x:=32767;
      d:=10;
      n:=1;
     while (x div d)<>0 do
     begin
          d:=d*10;
          n:=n+1;
     end;
     writeln('n=',n)
    end.
    Зауваження.Задане число є типу integer тому значення цього  чис-
               ла не повинно виходити за межi допустимих значень для
               цього типу. Змiнна d також типу integer. Хоча х  може
               приймати значення до 32767, але при  цьому  d  набуде
               значення 100000, що виходить за межi допустимих  зна-
               чень для чисел типу integer. Тому  ця  програма  може
               працювати з числами, що мають не бiльше чотирьох цифр.
    ****************************************************************
    Задача 18.4.2. Визначити скiльки цифр маї задане цiле число
                            (З перевiркою на вихiд за межi дiапазону).
    ****************************************************************
    program kilk_cifr;
    var n,d,x:integer; {d:longint;}
    begin
      x:=32000;
      d:=10;
      n:=1;
     while n<=5 do begin
     while (x div d)<>0 do
     begin
          d:=d*10;
          n:=n+1;
     end;
      x:=x+1;
     end;
     writeln('n=',n,x:9)
    end.
    **************************************************************
    Задача 18.4.3.  Визначити цифри заданого числа. Для Turbo Pascal 7.0
                       (Великi числа).
    **************************************************************
    program kilk_cifr;
    var i,n,d,x:longint;
    a:array [1..100] of Longint;
    begin
      x:=214748364;
      d:=10;
      n:=1;
     while (x div d)<>0 do
     begin
          d:=d*10;
          n:=n+1;
     end;
     writeln('n=',n);
    {++++++++++++++++++++++}
    {Визначення цифр заданого числа x}
     for i:=1 to n do
     begin
           a[i]:=x mod 10;
           x:=x div 10;
     Write(a[i]:5);
     end;
         Writeln;
    {++++++++++++++++++++++}
    end.
    Зауваження.Можна зробити висновок, що наведенi вище програми ко-
               ректно працюють коли кiлькiсть цифр в заданому  числi
               на одиницю  менша  максимально  допустимої  кiлькостi
               цифр для заданого типу величин.
    ***************************************************************
    Задача 18.4.4. Визначити кiлькiсть цифр в  цiлiй  частинi  дiйсного
                           числа.
    ***************************************************************
    program kilk_cifr;
    var n,i:integer;
    x,d:real;
    a:array[1..100] of integer;
    begin
      x:=9999999998.;
      d:=10;
      n:=1;
     while x/d>1 do
     begin
          d:=d*10;
          n:=n+1;
     end;
        writeln('n=',n);
    {++++++++++++++++++++++}
    {Визначення цифр заданого числа x}
     writeLn(x:2:0);
       d:=10;
     for i:=1 to n-2 do
     begin
           d:=d*10;
     end;
     for i:=1 to n do
     begin
           a[i]:=trunc(x/d);
     {trunc(x)-вiдкидання дробово• частини}
     {x:=(x/d-(round(x/d)-1))*d;}
           {round(x)-округлення до цiлого}
            x:=frac(x/d)*d;
     {frac(x)-дробова  частина  дiйсного    числа}
           d:=d/10; Write(a[i]:5);
     end;
    {++++++++++++++++++++++}
     writeln
    end.
    Пояснення.Алгоритм визначення  цифр  грунтується  на  вiдкиданнi
              дробової  частини  числа  пiсля  його    дiлення    на
              10^(n-1)-де n-кiлькiсть  цифр  в  числi.  Пiсля  цього
              вiдкидається перша  цифра  числа  (найстарший  розряд)
              шляхом вiддiлення дробової частини отриманої вiд попе-
              реднього  дiлення  i  наступного  множення  його    на
              10^(n-1).Таким чином визначають всi цифри числа.
    Зауваження.Через те, що Турбо Паскаль дозволяє працювати  тiльки
              з першими 12 цифрами дiйсного числато решта  цифр  бу-
              дуть невiрними. Хоча кiлькiсть  цифр  можна  визначати
              для чисел, що мають 38 цифр.
Попередня
Зміст
Наступна