M_CI_4
.pdfY Y
|
|
X |
|
|
X |
|
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
a) |
|
б) |
|||
Y |
Y |
X |
|
|
X |
в) |
|
г) |
|
|
|
||
Y |
Y |
||
|
|
|
|
|
|
|
|
X |
X |
д) |
е) |
Y
Y
|
X |
X |
є) |
|
ж) |
|
|
|
Y |
|
Y |
|
|
|
|
|
Y=X |
|
X |
X |
з) |
Рис.4.8 |
і) |
62
Y Y
X |
X |
й) |
к) |
Y |
Y |
X |
X |
л) |
м) |
Продовження рис. 4.8 |
|
Нижче наведений приклад алгоритму (рис. 4.8) та програми в якiй заштрихована область є прямокутником, центр якого спiвпадає з початком системи координат, висота дорiвнює 10 мм, а ширина 6 мм.
Приклад
4.17:
X = ?,
Y = ?
X, Y
Ні X<Sh/2 Y<Vis/2
|
Так |
Точкане |
Точка |
належить |
належить |
Кінець
Рис. 4.7 Алгоритмвизначення попадання точки в прямокутник
63
1: |
#include <stdio.h> |
2: |
|
3: |
#define VISOTA 10.0 |
4: |
#define SHIRINA 6.0 |
5: |
|
6: |
void main(void) |
7: |
{ |
8: |
float X,Y; |
9: |
printf("Координата X,(мм) = "); |
10: |
scanf("%f", &X); |
11: |
printf("Координата Y,(мм) = "); |
12: |
scanf("%f", &Y); |
13: |
if (X <= (SHIRINA/2)) &&(X >= (-SHIRINA/2)) |
14: |
&& (Y <= (VISOTA/2)) && (Y >= (-VISOTA/2)) |
printf("Введена точка належить |
|
|
заштрихованiй областi."); |
15:else
16:printf("Введена точка не належить
заштрихованiй областi.")
17:}
4.13.3.Завдання по операторах if-else, switch.
1.Скласти програму, яка буде реагувати на натискання на клавiатурi клавіш Y i N у будь-якому регістрi i, якщо була натиснута клавіша Y(y) - на екран виводити повiдомлення "Так", якщо була натиснута клавіша N(n) - виводити повiдомлення "Нi", якщо була натиснута будь-яка iнша клавіша - виводити повiдомлення "Вибiр не зроблено".
2.Скласти програму, яка реагувала б на натискання на клавiатурi клавіш з знаками математичних операцiй (+, -, *, /). На екран повиннi видаватися вiдповiдно повiдомлення: "Операцiя додавання", "Операцiя вiднiмання", "Операцiя множення", "Операцiя
дiлення". В разi натискання будь-якої iншої клавішi, виводити на екран повiдомлення
"Введений символ - не символ математичної операцiї".
3.Скласти програму, яка реагувала б на натискання на клавiатурi символу i виводила на екран наступнi повiдомлення: "Голосна латинська буква" - у випадку натискання будь-якої голосної латинської букви; "Приголосна латинська буква" - у випадку натискання приголосної латинської букви; "Введений символ - не латинська буква" - у випадку натискання iнших клавіш.
4.Скласти програму аналогiчну до завдання 3 замiнивши латинськi букви на росiйськi.
5.Визначити, яке дiйсне число R введене з клавiатури. Якщо R<0 - на екран видавати повiдомлення "Число менше нуля", якщо R>0 - "Число бiльше нуля", якщо R=0 - "Число дорiвнює нулю".
6.Скласти програму, яка реагувала би на натискання на клавiатурi символу i виводила на екран наступнi повiдомлення: "Натиснуто латинський символ" - якщо клавiатура знаходилась у станi введення латинських символiв; "Натиснуто символ кирилицi" - якщо клавiатура знаходилась у станi введення символiв кирилицi.
7.Скласти програму, яка б вiдповiдним чином реагувала на натискання символiв "!", "?", "$", "%" i виводила на екран повiдомлення: "Знак оклику", " Знак питання", "Знак долара", "Знак вiдсоткiв".
8.Скласти програму, яка дозволяла би ввести з клавiатури цiле число в межах вiд -3000 до 30000 i дозволяла визначити порядок числа. На екран виводити наступнi повiдомлення: "Десятки тисяч", "Тисячi", "Сотнi", "Десятки", "Одиницi", "Нуль".
64
9.Скласти програму, яка дозволяла би по введеному номеру мiсяця визначати кiлькiсть днiв в ньому. Вважати, що рiк невисокосний.
10.Скласти програму, яка дозволяла би по введеному з клавiатури символу визначити в якому регiстрi (верхньому чи нижньому) цей символ був введений. На екран видавати такi
повiдомлення: "Символ - велика латинська буква", "Символ - мала латинська буква". В
іншому випадку видати повідомлення : "Невiдомий символ".
11.Написати програму, яка б читала з клавіатури два натуральних числа m та n і друкувала б всі числа Фібоначчі з проміжку [m, n]. Числа Фібоначчі задаються рекурентним
співвідношенням f0 = 0, f1 = 1, fi = fi-1 + fi-2, i > 1.
12. Написати програму, яка б визначала, чи можна побудувати трикутник за заданими довжинами сторін a, b, c; якщо це так то програма повинна визначити, яким він є: гострокутним, прямокутним, різностороннім, рівнобедреним, рівностороннім.
13. Задано х. Вирахувати y за формулою:
y =
x4, впротивномуразі.
14. Задано х. Вирахувати y за формулою:
|
|
|
0, при x ≤ 0, |
|
|
|
x2 − x, при 0 < x ≤1, |
||
y = |
|
|||
|
2 |
−sinπx |
2 |
−1, впротивномуразі. |
x |
|
|
Наведений нижче приклад дозволяє розпiзнати натискання на клавiатурi круглих, квадратних i фiгурних дужок.
Приклад 4.18:
1: #include <stdio.h>
2:
3:void main(void)
4:{
5:char ch;
6:printf("Введіть (,),[,],{ або }");
7:scanf("%c", &ch);
8:switch (ch)
9:{
10: |
case '(': |
printf("Відкрита кругла дужка "); |
break; |
11: |
case ')': |
printf("Закрита кругла дужка "); |
break; |
12: |
case '[': |
printf("Відкрита квадратна дужка "); |
break; |
13: |
case ']': |
printf("Закрита квадратна дужка "); |
break; |
14: |
case '{': |
printf("Відкрита фігурна дужка "); |
break; |
15: |
case '}': |
printf("Закрита фігурна дужка "); |
break; |
16: |
default: |
printf("Символ - не дужка "); |
|
17:}
18:}
4.13.4.Завдання по операторах циклу.
1.Вивести на екран таблицю cos(x)-sin(y) при змiнi y вiд 0 до 90 градусiв з кроком 15 градусiв (виведення по горизонталi) i змiнi x вiд 0 до 180 градусiв з кроком 30 градусiв (виведення по вертикалi).
2.Вивести на екран таблицю a*(a+1)*...*(a+n-1) при змiнi a вiд 1 до 5 з кроком 1 (виведення по горизонталi) i при змiнi n вiд 5 до 18 з кроком 3 (виведення по вертикалi).
65
3. Вивести на екран таблицю 1+sin(x), 1-sin(x), 1+tg(x), 1-tg(x) (по горизонталi) при змiнi аргументу вiд 0 до 180 градусiв з кроком 15 градусiв (виведення по вертикалi). В програмi передбачити неможливiсть обчислення tg(90).
4.Вивести на екран таблицю sin(a)+sin(2*a)+...+sin(n*a) при змiнi a вiд 0 до 90 градусiв з кроком 15 градусiв (виведення по горизонталi) i змiнi n вiд 10 до 50 з кроком 10 (виведення по вертикалi).
5.Вивести на екран таблицю sin(x)+sin(y) при змiнi y вiд 0 до 90 градусiв з кроком 30 градусiв (виведення по горизонталi) i змiнi x вiд 0 до 90 градусiв з кроком 10 градусiв ( виведення по вертикалi).
6.Вивести на екран таблицю 1/sin(a)+1/sin(2*a)+...+ +1/sin(n*a) при змiнi a вiд 0 до 90
градусiв з кроком 30 градусiв (виведення по горизонталi) i при змiнi n вiд 10 до 50 з кроком 10 (виведення по вертикалi). В програмi передбачити неможливiсть обчислення функцiї
1/sin(0).
7.Вивести на екран таблицю ln(x), ex при змiнi аргументу вiд 0 до е з кроком e/20. В програмi передбачити неможливiсть обчислення ln(0).
8.Вивести на екран таблицю tg(x), сtg(x) (по горизонталi) при змiнi аргументу вiд 0 до 90 градусiв з кроком 5 градусiв (виведення по вертикалi). В програмi передбачити неможливiсть обчислення tg(90) i ctg(0).
9.Вивести на екран таблицю 1/a+1/(2*a)+...+1/(n*a) при змiнi a вiд 2 до 10 з кроком 2 (виведення по горизонталi) i при змiнi n вiд 5 до 50 з кроком 5 (виведення по вертикалi).
10.Вивести на екран таблицю 1/sin(x), 1/cos(x), 1/(sin(x)*cos(x)) (по горизонталi), при змiнi аргументу вiд 0 до 180 градусiв з кроком 10 градусiв (виведення по вертикалi). В програмi передбачити неможливiсть дiлення на нуль.
11.Написати програму обчислення факторіалу: n! = 1 * 2 * . . . * n; При n = 0, n! = 1.
12.Написати програму, яка б читала натуральні числа m і n та друкувала б всі натуральні числа, менші від n, сума цифр яких дорівнює m.
13.Написати програму, яка б за введеним натуральним числом обчислювала добуток:
|
+ |
|
1 |
+ |
|
1 |
|
|
1 |
||
|
|
||||
|
|
1n |
|
||
14. |
|
Нехай |
21n L 1 + n1n .
a |
= b =1; |
a |
|
= |
1 |
|
b |
+ |
1 |
a |
|
|
b = 2a |
2 |
+b ; (k =1, 2, K) . Задано |
k |
2 |
|
2 |
k −1 |
; |
k −1 |
|||||||||
1 |
1 |
|
|
|
k −1 |
|
|
|
k |
k −1 |
натуральне число n. Обчислити a1b1 +a2b2 +L+anbn.
*Примітка: для обчислення значень sin(x), сos(x), ln(x), ex потрібно скористатись відповідними математичними функціями, для користування якими й вашій програмі, ви повинні скористатись директивою #include для включення файлу "math.h" до вашої програми (дивіться інформацію про функції в додатку Б).
Нижче наведений приклад програми, яка виводить на екран таблицю множення.
Приклад 4.19:
1:#include <stdio.h>
2:#include <conio.h>
4: #define MAX 10
5:
6:void main (void)
7:{
8:int i,j;
9:/*--Виведення таблицi множення за допомогою оператора for--*/
10:clrscr();
11:printf("\n");
12:printf("%4c",' ');
66
13:for(i =1; i <= MAX; i++)
14:{
15:printf("%2d", i);
16:if (i < MAX) printf("%c",' ');
17:}
18:printf("%4c",' ');
19:for(i =1; i <= MAX; i++)
20:{
21: |
printf("\n%3d", i); |
j++) |
22: |
for(j =1; j <= MAX; |
|
23: |
printf("%3d", |
i*j); |
24:}
25:}
4.14.Контрольнi запитання.
1.Оператори if та else. Умовні вирази. Приклади.
2.Оператор switch. Приклади.
3.Оператор while. Приклади.
4.Оператор do-while. Приклади.
5.Оператор for. Приклади.
6.Оператор break та continue. Приклади.
7.Оператор goto та функція exit(). Приклади.
8.Алгоритми. Словесно-формульна форма запису алгоритму. Приклади.
9.Алгоритми. Блок-схеми алгоритмів. Приклади.
67