Алгоритми вибору case мовою програмування Pascal
Загальна форма запису:
case <селектор (логічний вираз, математичний вираз, змінна)> of
case <селектор (логічний вираз, математичний вираз, змінна)> of
значення1 : оператор;
значення2 : оператор;
. . . . . . . . . .
значенняN : оператор
else оператор;
end;
значення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*a - 1*b);
end;
3:
begin
write(' Введіть два довільні числа: ');
read(a, b);
writeln(1*a * 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 – знаходження добутку чисел;
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).
Програма повинна виконати завдання, номер якого буде введено.
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 стандартних алгоритмів, застосовуваних при вирішенні завдань олімпіадного програмування.
- Підрахунок різних букв в слові
- Перестановка букв в слові (циклічний зсув вправо)
- Перевірка рядки на "паліндромний"
- Друк всіх дільників натурального числа A
- Друк всіх скоєних чисел до 10000
- Друк всіх простих чисел до 500
- Підрахунок суми цифр числа
- Підрахунок суми елементів одновимірного масиву
- Підрахунок суми елементів двомірного масиву
- Пошук максимального елемента в масиві
- Пошук мінімального елемента в масиві
- Пошук середнього арифметичного в масиві
- Друк всіх елементів масиву з інтервалу C..D
- Циклічний зсув елементів масиву вправо
- Друк самого часто зустрічається елемента з масиву
- Чи всі елементи масиву різні?
- Сортування масиву "бульбашкою"
- Рішення рівняння: A * x ^ 2 + B * x + C = 0
- Обчислення довжини відрізка | AB |
- Яка точка (A або B) ближче до початку координат
- Обчислення площі трикутника по 3 вершин
- Чи потрапляє точка M (x, y) в коло з центром O (Xc, Yc) і радіусом R
- Перекладу десяткового числа в двійкове
- Перекладу двійкового числа в десяткове
- Перекладу десяткового числа в шістнадцяткове
- Перекладу шістнадцятирічного числа в десяткове
- Рекурсивні алгоритми: знаходження НСД і НСК двох чисел
- Рекурсивні алгоритми: обчислення факторіала
- Рекурсивні алгоритми: генерація перестановок
- Рекурсивні алгоритми: швидке сортування
- Рішення системи 2-х рівнянь з двома невідомими
- Рішення системи 3-х рівнянь з трьома невідомими
- Визначення перетину двох відрізків
- Визначення положення точки відносно сектора
- Положення точки щодо вектора
- Положення точки щодо трикутника (варіант 1)
- Положення точки щодо трикутника (варіант 2)
- Моделювання додавання двійкових чисел
- Моделювання віднімання двійкових чисел
- Зведення цілого числа в натуральну ступінь (варіант 1)
- Зведення цілого числа в натуральну ступінь (варіант 2)
- Множення довгих натуральних десяткових чисел
- Кодування: приклад простий кодування (зрушення по ключу)
- Обробка тексту: підрахунок кількості слів в тексті
- Обробка тексту: виділення слів з тексту
- Обробка тексту: виділення чисел з тексту
- Обробка тексту: дозвіл введення тільки цифр
- Обробка тексту: переклад в маленькі букви (нижній регістр)
- Обробка тексту: переклад в заголовні букви (верхній регістр)
- Обробка тексту: видалення з тексту Комметаріі типу {...}
- Бек-трекінг: Міста
- Бек-трекінг: Прохід по лабіринту
- Бек-трекінг: Доміно
- Бек-трекінг: Послідовність
- Бек-трекінг: Магічний квадрат
Немає коментарів:
Дописати коментар