четвер, 8 березня 2018 р.

Алгоритми властивостей цілих чисел


Практична робота 18 «Алгоритми властивостей цілих чисел на мові Pascal»
Завдання 1. Скласти і реалізувати алгоритм  для знаходження   кількості цифр, суми цифр натурального числа, подільності на цифри, якщо ціле число задане випадковим чином.
program SummaNumer;                     {назва    алгоритму підрахунку суми цифр цілого числа}
var  m, n, i, m1, k, s: integer;                {оголошення  змінних величин: цілі числа}
begin                            {початок   виконання алгоритму і введення випадкових натуральних чисел}
m:=(10+random(5))*(20+random(7)) *(random(20)) + 1+random(3) ;   
writeln( ' Якщо натуральне число  m=', m); writeln;  m1:=m; k:=0; s:=0; n:=0;
repeat    n:=m mod 10; k:=k+1; s:=s+n;  m:=m div 10;   until m=0; 
     {виконання циклу з  післяумовою  для обчислення}
writeln('Сума цифр числа ', m1,   ' дорівнює числу: ', s); writeln;
writeln('Кількість цифр числа ', m1,   ' дорівнює числу: ', n); writeln;
if (m1 mod 2) =0 then writeln(m1,   ' - це парне число ');  writeln;
if (m1 mod 2) =1 then  writeln(m1,   ' - це непарне число ');  writeln;
if (s mod 3) =0 then writeln(m1,   ' - це число має вигляд 3k, ділиться на 3 націло');  writeln;
if (s mod 3) =1 then writeln(m1,   ' - це число  має вигляд 3k+1');  writeln;
if (s mod 3) =2 then writeln(m1,   ' - це число  має вигляд 3k+2');  writeln; m:= m1 mod 100;
if (m mod 4) =0 then writeln(m1,   ' - це число  має вигляд 4k, ділиться на 4 націло');  writeln;
if (m mod 4) =1 then writeln(m1,   ' - це число  має вигляд 4k+1');  writeln;
if (m mod 4) =2 then writeln(m1,   ' - це число  має вигляд 4k+2');  writeln;
if (m mod 4) =3 then writeln(m1,   ' - це число  має вигляд 4k+3');  writeln; m:= m1 mod 10;
if (m mod 5) =0 then writeln(m1,   ' - це число  має вигляд 5k, ділиться на 5 націло');  writeln;
if ( (s mod 3) =0)  and ((m mod 2)=0) then writeln(m1,   ' - це число  має вигляд 6k, ділиться на 6 націло');  writeln;
if (m mod 7) =0 then writeln(m1,   ' - це число  має вигляд 7k, ділиться на 7 націло');  writeln;
m:=m1; m:= m mod 1000;
if (m mod 8) =0 then writeln(m1,   ' - це число  має вигляд 8k, ділиться на 8 націло');  writeln;
if (s mod 9) =0 then writeln(m1,   ' - це число має вигляд 9k, ділиться на 9 націло');  writeln;
if (m mod 10) =0 then writeln(m1,   ' - це число має вигляд 10k, ділиться на 10 націло');  writeln;
end.   {закінчення алгоритму}
Протестуйте алгоритм  чотири рази та перевірте правильність результатів.
Завдання 2. Скласти і реалізувати алгоритм  знаходження   кількості першої цифри  від початку у цілому числа, що задане випадковим чином.
Program Cifr1;                                                     {оголошення  назви алгоритму}
var n, x,c,c1,k: integer;                                          {оголошення  змінних величин: цілі числа}
begin
    n:=(10+random(5)) *(20+random(7)) *(random(20)) + 1+random(3);     {випадкове число}
writeln( ' Якщо натуральне число  n=', n); writeln;            {виведення на екран випадкового числа}
x:=n;     while n>9 do      n:=n div 10;    c1:=n;    k:=0;                   {цикл з передумовою}
repeat
       c:= x mod 10;       if c=c1 then k:=k+1;      x:=x div 10;   until x=0;  {цикл з післяумовю}
writeln(' Кількість першої цифри дорівнює:   '
, k);  end.
Протестуйте алгоритм  чотири рази та перевірте правильність результатів.
Завдання 3. Скласти і реалізувати алгоритм  знаходження   кількості другої від початку цифри у цілому числа, що задане випадковим чином.
Program Cifr2;                                                                                            {оголошення  назви алгоритму}
var n, x,c,c1,k: integer;                                                           {оголошення  змінних величин: цілі числа}
begin
    n:=(10+random(5)) *(20+random(7)) *(random(20)) + 1+random(3);          {випадкове число}
writeln( ' Якщо натуральне число  n=', n); writeln;            {виведення на екран випадкового числа}
x:=n;     while n>100  do  n:=n div 10; c1:=n div 10;                                              {цикл з передумовою}
writeln('n=', n); end;  c1:=n mod 10; writeln('c1=',c1); writeln('n=',n);     k:=0;                 
repeat       c:= x mod 10;   if c=c1 then k:=k+1;   x:=x div 10;   until x=0;            {цикл з післяумовoю}
writeln('Кількість другої цифри дорівнює:'
, k);  end.
Протестуйте алгоритм  чотири рази та перевірте правильність результатів.


Немає коментарів:

Дописати коментар