Практична
робота 1. Лінійні алгоритми мовою Pascal
Завдання 1(6 балів). Скласти і реалізувати алгоритм в програмному середовищі, який виконує
взаємний обмін числовими значеннями двох цілих змінних; і виводить на екран два початкових значення змінних і два кінцеві
значення цих змінних. Використовувати в алгоритмі більше двох цілих змінних не
можна.
Алгоритм мовою Pascal
program SuperposiziaNumer;
{алгоритм обміну числовими
значеннями двох змінних}
var {оголошується опис
змінних величин, які використовує алгоритм}
x,y: integer;
{оголошуються дві цілі змінні у даному алгоритмі}
begin {оголошується
початок алгоритмічних дій}
write('x='); {на
екрані запит на введення з клавіатури цілого числа: х}
readln(x); {зчитування
числового значення і внесення його в змінну х}
write('y='); {
на екрані запит на введення з клавіатури цілого числа: у}
readln(y); {зчитування числового значення і внесення його в змінну
у}
write('початкове значення x='); writeln(x,' '); { перевірка початкового: х}
write('початкове значення y='); write(y,' '); {
перевірка початкового: у}
x:=x+y; y:=x-y; x:=x-y; {взаємний обмін числами за допомогою арифметичних дій.}
writeln;
{поставити курсор на екрані з нового рядка}
write('кінцеве
значення x='); {виведення
на екран повідомлення}
writeln(x,' '); {виведення на екрані числового
значення змінної х}
write('кінцеве
значення y='); {виведення на екран повідомлення}
write(y,' '); {виведення
на екрані значення значення змінної у}
writeln; {поставити курсор на екрані з
нового рядка}
end. {закінчення дій алгоритму}
Протестувати правильну
роботу цього алгоритму для двох цілих чисел:
-9 і 17; 0 і 7;
100 і; 250; -900 і - 1000.
Завдання 2(6 балів). Cамостійно скласти і реалізувати алгоритм
program SuperposiziaNumer, який виконує
взаємний обмін числовими значеннями між трьома цілими змінними; і виводить на екран три початкових значення змінних і три кінцеві значення цих змінних. Використовувати в
алгоритмі більше чотирьох цілих змінних
не можна.
Протестувати правильну
роботу цього алгоритму для трійок цілих чисел:
-2; -9
і 17; -1; 0 і 7; 7; 100
і 250; -300; -900 і - 1000.
Практична
робота 2. Лінійні алгоритми мовою Pascal
Завдання 1(6 балів). Скласти і реалізувати алгоритм в програмному середовищі, який визначає
із двох довільних дійсних чисел найменше число та найбільше число. Значення двох дійсних змінних вводяться зклавіатури; і виводить
на екран найменше значення із двох чисел
та найбільше значення із двох
чисел. Використовувати в алгоритмі більше трьох дійсних змінних не можна.
Алгоритм мовою Pascal
program МАхМіnNumer; {алгоритм знаходження МАХ(x;y) та МІN(x;y)
}
var {оголошується опис
змінних величин, які використовує алгоритм}
x,y,z: real; {оголошуються
три дійсні змінні у даному алгоритмі}
begin {оголошується початок алгоритмічних дій}
write('x='); {на
екрані запит на введення з клавіатури цілого числа: х}
readln(x); {зчитування числового значення і внесення його в змінну
х}
write('y='); { на екрані запит на введення з клавіатури цілого
числа: у}
readln(y); {зчитування числового значення і внесення його в змінну
у}
write('початкове значення x='); writeln(x,' '); { перевірка початкового: х}
write('початкове значення y='); write(y,' '); { перевірка
початкового: у}
z:=abs(x-y); x:=0.5*(x+y-z); y:=x+z; {знаходження
МАХ(x;y) та МІN(x;y)}
writeln; {поставити курсор на екрані з нового рядка}
write('найменше значення x='); {виведення на екран повідомлення}
writeln(x,' '); {виведення на екран числового
значення змінної х}
write('найбільше значення y='); {виведення
на екран повідомлення}
write(y,' ');
{виведення на екрані числового значення змінної y}
writeln; {поставити курсор на екрані з нового рядка}
end. {закінчення дій алгоритму}
Протестувати правильну
роботу цього алгоритму для двійок цілих чисел: -9
і -17; 0 і -8; -2 і
0; -1 і 1;
100
і 250; 900 і - 1000.
Завдання 2(6 балів). Cамостійно скласти і реалізувати алгоритм
в програмному середовищі, який визначає із трьох довільних дійсних чисел
найменше число та найбільше число. Значення трьох дійсних змінних вводяться з клавіатури;
і результат виводить на екран найменше значення із трьох чисел
та найбільше значення із трьох
чисел. Використовувати в алгоритмі більше чотирьох дійсних змінних не
можна.
Протестувати правильну
роботу цього алгоритму для трійок цілих чисел:
-2; -9
і -17; -1; 0 і - 7; 7; 100
і 250; 300; 300 і - 300.
Практична робота 3. Лінійні алгоритми мовою Pascal
Завдання 1.(4 бали). Нехай R- це приблизна кількість риби у ставку(R>0), проте вона невідома. Одночасно
виловити усю рибу в ставку неможливо. Тому першого дня зі ставка виловлюють K риб(K>0), помічають їх і відпускають назад у
ставок. Через день знову закидають сітку і виловлюють M риб(M>0),
серед яких виявляють N помічених риб(0<N<=K). Створіть і реалізуйте алгоритм, який
знаходить приблизну кількість риб у ставку.
Розв’язання.
Нехай у ставку R – риб, тоді K/R – це
ймовірність виловити помічену рибу. Кількість помічених риб серед другого
вилову приблизно дорівнює M*K/R =N. Звідси отримаємо приблизну кількість риб у ставку R =M*K/N риб.
program Fisher; {назва алгоритму}
var r,k,m,n: integer; {оголошення змінних величин: r,k,m,n - це цілі числа}
begin
{початок
виконання дій алгоритму}
readln(k); {оголошення про введення
числа k
- це ціле число}
readln(m); {оголошення про введення
числа m
- це ціле число}
readln(n); {оголошення про введення
числа n
- це ціле число}
r:=k*m div n; {арифметичні дії над цілими k,m,n і присвоєння результату r}
write(r); {оголошення про виведення
числа r
- це ціле число}
end. {кінець
виконання дій алгоритму}
Протестуйте
його для трійок цілих чисел (K;M;N)={(2000;2400;1000),
(2300;2500;1600), (5581;3159;2992), (4581;3159;2992), (2001;20001;2001), (2077;2166;1552)}.
Завдання 2.(4 бали). Із
молока, жирність якого становить а%(1<a<7) виготовляють сир жирністю b%(15<b<30).При цьому залишається сироватка
жирністю с% (0,0001<c< 0,09).
Створіть
і реалізуйте алгоритм, який знаходить кількість сиру m кг, що виходить із
k тонн молока.
Розв’язання.
Нехай із k
тонн молока виходить m кг сиру. Маса
жиру в k тоннах молока
k*1000*(а/100) =10kа
кг. Маса жиру в m кг сиру становить m*(b/100) кг. Маса жиру в сироватці становить (k*1000-m)*(с/100). Оскільки при переробці молока кінцевими
продуктами є сир та сироватка, тоді складаємо рівняння для кількості жиру в
обох продуктах: m*(b/100) + (k*1000-m)*(с/100) =10kа, звідси m =1000k(a-c)/(b-c)
program Cheese; {назва
алгоритму}
var a,b,c, k,m: real; {оголошення
змінних величин: a,b,c, k,m: - це дійсні числа}
begin
{початок виконання дій
алгоритму}
writeln('введіть жирність молока 1<a<5 а='); readln(a);
writeln('введіть жирність сиру 15<b<30 b='); readln(b);
writeln('введіть жирність сироватки 0.001<c<0.100, c=');
readln(c);
writeln('введіть кількість молока 1<k<1000, k='); readln(k);
{оголошення про
введення числа k - це дійсне
число}
m:=1000*k*(a-c)/(b-c); {арифметичні дії над дійсними a,b,c, k, і присвоєння результату m}
write(m); {оголошення про
виведення числа m - це ціле число}
end. {кінець
виконання дій алгоритму}.
Протестуйте
алгоритм для четвірок дійсних чисел (a; b; c; k)={(5.5; 17.4; 0.1; 1), (3.89; 16.67; 0.086;
20), (4.581; 17.759; 0.029; 40.5), (3.181; 18.59; 39.92; 30), (4.1;
19.61; 0.08; 25).
Завдання 3.(4 бали). Із
молока, жирність якого становить а%(1<a<7) виготовляють вершки k кг (1< k <100) вершків, жирністю b%(20<b<60). Самостійно створіть і реалізуйте алгоритм, який
знаходить кількість молока m кг, жирність якого становить а%(1<a<7), із якого вийшло k кг (0.1< k <100) вершків, жирністю b% (20<b<60).
Розв’язання.
Нехай із m
кг
молока виходить k
кг вершків. Маса жиру в m
кг
молока становить 0.01*а* m Маса жиру в k
кг вершків становить 0.01*b* k кг. Оскільки при переробці молока
кінцевими продуктами є вершки, тоді складаємо рівняння для кількості жиру в
обох продуктах: 0.01*а* m = 0.01*b* k.
Звідси m = b* k/а,
для b,k,а дійсних.
Протестуйте
алгоритм для трійок дійсних чисел (a; b; k)={(5.5; 27.4; 1), (3.89; 26.67; 3.86), (4.581; 37.759; 20.5), (3.181; 28.59; 30), (4.1; 39.61; 25).
Практична робота 4. Лінійні алгоритми мовою Pascal
Завдання 1.(4 бали).
Створіть і реалізуйте алгоритм, який знаходить скільки треба досипати a кг солі до k кг водного m% розчину, щоб
отримати водний розчин з концентрацією n %.
Розв’язання.
Нехай у розчин треба досипати a кг солі. Маса солі у початковому розчині становить
0.01mk кг.
Маса солі у новому розчині становить 0.01n(k +а). Тоді маємо
рівняння: 0.01n(k +а)= 0.01mk+а. Звідси, маємо а =0.01k(m- n)/(0.01n -1)
program SaltSolution; {назва
алгоритму}
var a,k,m,n: real; {оголошення змінних величин:
а,k,m,n - це дійсні числа}
begin
writeln('введіть початкову масу води 1<k<5000 k='); readln(k);
writeln('введіть початковий відсоток концентрації солі у воді 1<m<10 m='); readln(m);
writeln('введіть кінцевий відсоток концентрації солі у воді 10<m<60
n='); readln(n);
a:=0.01*k*(m- n)/(0.01*n -1); {арифметичні дії над дійсними
k,m,n і присв-я результату a}
write(a , 'кг'); {оголошення про виведення
числа a - це ціле число}
end.
{кінець виконання дій
алгоритму}
Протестуйте
його для трійок дійсних чисел (k;m;n)={(200; 2; 12), (300;2.5;16), (5500;3;29), (581; 3;
9), (200; 1.8; 20), (1000; 1.6; 2)}.
Завдання 2.(4 бали). Швейна
фабрика має пошити k костюмів
двох моделей. Для визначення того, скільки костюмів і якої моделі треба
пошити провели опитування серед покупців.
Результати опитування: 1-шу модель
вибрало m покупців; 2-гу
модель вибрало n покупців. Створіть і реалізуйте алгоритм, який знаходить кількість
костюмів і якої моделі треба пошити, якщо опитано m+n покупців.
Розв’язання.
Частка покупців, котрі вибрали першу модель, становить m /(m+n). Частка покупців, котрі вибрали другу модель,
становить n /(m+n). Швейна фабрика
має пошити:
1-у
модель km /(m+n) одиниць та 2-у
модель kn /(m+n) одиниць.
program Models; {назва
алгоритму}
var a1,a2,k,m,n: integer; {оголошення змінних величин: a1,a2,n, k,m: - це цілі числа}
begin
{початок виконання дій
алгоритму}
writeln('введіть кількість замовлених костюмів 1<k<10000 а='); readln(k);
writeln('введіть кількість
покупців 1-ої моделі 1<m<3000); readln(m);
writeln('введіть кількість
покупців 2-ої моделі 1<n<3000); readln(n);
{оголошення про
введення числа k - це дійсне
число}
a1:=(k*m) div (m+n); {арифметичні дії
над цілими n, k,m, і
присвоєння результату a1}
a2:=(k*n) div (m+n); {арифметичні дії над цілими n, k,m, і
присвоєння результату a2}
write('a1=',a1, 'одиниць; ', 'a2=', a2,
'одиниць.'); {виведення кіль-сті модельних костюмів }
end. {кінець
виконання дій алгоритму}.
Протестуйте
алгоритм для трійок цілих чисел (a; b; c; k)={(5; 1;
1), (3; 16; 20), (4581; 17; 29), (3181; 181;
59), (3900; 92; 30), (410; 19;
25).
Завдання 3.(4 бали). Син
з батьком домовилися зустрітися між k та m годинами протягом
доби. Але у них існувала умова зустрічі: той, хто приходить першим на місце
зустрічі, чекає другого не більше n хв, після чого покидає місце зустрічі. Самостійно створіть
і реалізуйте алгоритм, який знаходить ймовірність
зустрічі сина та батька.
Розв’язання.
Нехай х – момент приходу сина; у –
момент приходу батька; тоді умова зустрічі
батька та сина записується виразом: |x-y|=<n. Тоді -n=< x-y=<n, звідки
отримаємо множини точок в прямокутній системі координат: y=<х+n; у>=x-n. Якщо А – подія,
коли батько і син зустрінуться за цієї умови, то фактом зустрічі буде точка
вибрана із заштрихованої 6-кутника. Тоді ймовірність зустрічі(це відношення площ геометричних фігур в прямокутній системі координат xOy)
Р(А)=(Площа 6-кутника):(площа квадрата)=(m-k) 2*602-(60m-60k- n)2/((m-k)
2*602)
program Meeting;
var k,m,n:
integer; p: real;
begin writeln(' введіть нижню
межу на проміжку зустрічі: 10<k<20 k='); readln(k);
writeln(' введіть верхню межу на проміжку зустрічі: 11<m<24 m='); readln(m);
writeln('
тривалість очікування в хвилинах 5<n<60
n='); readln(n);
p:=((m-k)*(m-k)*60*60-(60*m-60*k-n)*(60*m-60*k-n))/((m-k)*(m-k)*60*60);
write('p=',p); {виведення результату} end. {кінець алгоритму}
Протестуйте
алгоритм для трійок дійсних чисел (k; m; n)={(15; 17.41), (8; 12; 80), (14; 17; 15), (18; 19; 15), (12; 15; 25).
Немає коментарів:
Дописати коментар