вівторок, 2 червня 2020 р.

Алгоритми вибору case мовою програмування Pascal

Алгоритми вибору  case мовою програмування Pascal

Загальна форма запису:
case <селектор (логічний вираз, математичний вираз, змінна)> of
значення1 : оператор;
значення2 : оператор;
. . . . . . . . . .
значенняN : оператор
else оператор;
end;
В операторі може бути кілька дій, тобто використовуватися begin, end, а може бути порожній оператор. Значень може бути кілька.
Завдання 1.
З клавіатури вводиться цифра. Вивести письмову назву цієї цифри.
Розв’язання.
Кодування мовою програмування Pascal:
program Z1;
var
  a : integer;
begin
  write('введіть цифру: ');
  readln(a);
      case a of
        0 : writeln ('ви ввели нуль.');
        1 : writeln ('ви ввели одиницю.');
        2 : writeln ('ви ввели двійку.');
       3 : writeln ('ви ввели трійку.');
       4 : writeln ('ви ввели четвірку.');
       5 : writeln ('ви ввели пятірку.');
       6 : writeln ('ви ввели шістку.');
       7 : writeln ('ви ввели сімку.');
       8 : writeln ('ви ввели вісімку.');
        9 : writeln ('ви ввели цифру девять.')
        else writeln('ви ввели не цифру.');
      end;
end.
Задача 2.
Складіть програму, яка імітує своєрідний калькулятор, де 1-сума двох чисел, 2-різницю двох чисел, 3-твір двох чисел, 4-ціла частина від ділення, 5-залишок від ділення, 6 - квадратний корінь числа, інакше введений невідомий номер операції .
Розв’язання.
Кодування мовою програмування Pascal:
program Z2;
var
  a, b: real;
  i, c, d: integer;

begin
  writeln('Калькулятор.');
  writeln('1 - сума двох чисел;');
  writeln('2 - різниця двох чисел;');
  writeln('3 - добуток двох чисел;');
  writeln('4 - ціла частина від ділення;');
  writeln('5 - остача від ділення;');
  writeln('6 - квадратний корінь числа.');
  write('Введіть цифру: ');
  readln(i);
  case i of
    1:
      begin
        write('Введіть три довільні числа: ');
        read(a, b, c);
        writeln(1*a+1*b+1*c);
      end;
    2:
      begin
        write(' Введіть два довільні числа: ');
        read(a, b);
        writeln(1*- 1*b);
      end;
    3:
      begin
        write(' Введіть два довільні числа: ');
        read(a, b);
        writeln(1** b);
      end;
    4:
      begin
        write(' Введіть два довільні числа: ');
        read(c, d);
        writeln(c div d);
      end;
    5:
      begin
        write(' Введіть два довільні числа: ');
        read(c, d);
        writeln(c mod d);
      end;
    6:
      begin
        write('Введіть число: ');
        read(c); 
writeln(sqrt(c):4:5);
      end;
  else writeln('Помилка.');
  end;
end.


Завдання для самостійного опрацювання


Задачі Case

1.     Дано ціле число, що визначає оцінку. Вивести опис оцінки (1-3: погано, 4-6: задовільно, 7-9: добре, 10-12: відмінно, інші випадки: помилка)
2.     Написати програму, яка вводить два цілих числа та виводить таке меню:
Введіть номер завдання:
1 – знаходження суми чисел;
2 – знаходження модулю різниці чисел;
3 – знаходження добутку чисел;

3. Програма повинна виконати завдання, номер якого буде введено
Написати програму, яка вводить радіус та виводить таке меню:
Введіть номер завдання:
1 – обчислення довжини кола
 (L=2*3.1415926*R);
2 – обчислення площі круга
 (S=3.1415926*R*R);
3 – обчислення об’єму сфери
(V=(4/3)* 3.1415926*R*R*R).
Програма повинна виконати завдання, номер якого буде введено
.
4.     Мастям гральних карт присвоєні номери: 1 — піки, 2 — трефи, 3 — бубни, 4 — черви. Значенням карт, що старші десятки, присвоєно номери: 11 — валет, 12 — дама, 13 — король, 14 — туз. Дано два цілих числа: N — значення (6 <= N <= 14) та M — масть карти (1<= M <= 4). Вивести назву карти у вигляді «шістка бубн», «дама чирв», «туз треф» та ін.


5.     Дано ціле число від 280 до 299. Вивести рядок – письмово запис назви цього числа. Наприклад, 256 – двісті п’ятдесят шість.


Завдання 6. Скласти і реалізувати алгоритм  для знаходження   кількості цифр, суми цифр натурального числа, подільності на цифри, якщо ціле число задане випадковим чином.
Використайте сase для найкращого способу запису даного нижче алгоритму.
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.   {закінчення алгоритму}

Протестуйте алгоритм  чотири рази та перевірте правильність результатів.

В даному розділі розглянуто набір реалізацій А.Нікітін на мові Pascal стандартних алгоритмів, застосовуваних при вирішенні завдань олімпіадного програмування.

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

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