- •Міністерство транспорту та зв'язку україни
- •Мета виконання лабораторно-практичних робіт
- •Порядок виконання лабораторно-практичних робіт
- •Оформлення звітів про виконання лабораторно-практичних робіт
- •Лабораторна робота № 1-2
- •1 Короткі теоретичні відомості
- •5 Приклад виконання лабораторної роботи
- •6 Порядок виконання лабораторної роботи
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •7 Контрольні запитання
- •Лабораторна робота № 3 Тема: "Програмування розгалужених обчислювальних процесів з використанням умовних операторів"
- •1 Короткі теоретичні відомості Умовний оператор if. Уморвний оператор – це оператор, який виконується в залежності від виконання деякої умови.
- •Синтаксис оператора
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Контрольні запитання
- •Лабораторна робота № 4
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •Оператор циклу while. Цикл while – це ітераційний цикл із передумовою. Це оператор циклу, який працює до тих пір, поки деяка умова буде істинною.
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 6-7
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 8
- •2 Постановка завдання
- •3 Приклад виконання лабораторної роботиІндивідуальне завдання
- •4 Контрольні запитання
- •Лабораторна робота № 9
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 10
- •1 Короткі теоретичні відомості
- •2 Індивідуальні завдання
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 11-12
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань:
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 13-14
- •1 Короткі теоретичні відомості
- •2 Постановка завдання.
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 15
- •1 Короткі теоретичні відомості
- •Int putchar(int c);
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 16
- •1 Короткі теоретичні відомості
- •Int strcmp(const chart *str1, const chart *str2);
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 17-18
- •1 Короткі теоретичні відомості
- •2 Постановка задачі
- •3 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 19
- •1 Короткі теоретичні відомості
- •2 Завдання практичної роботи
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •6 Контрольні запитання
- •Лабораторна робота № 20
- •1 Короткі теоретичні відомості
- •2. Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Лабораторна робота № 21
- •1 Короткі теоретичні відомості
- •3 Методичні вказівки
- •2 Варіанти індивідуальних завдань
- •4 Приклад виконання лабораторної роботи
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1 Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Лабораторна робота № 24
- •1. Короткі теоретичні відомості
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 1-2
- •1 Короткі теоретичні відомості
- •Оператор виконує наступні дії:
- •3 Методичні вказівки
- •4 Контрольні запитання
- •Практична робота № 3
- •1 Короткі теоретичні відомості
- •Int array[a];
- •Int array[12];
- •Int array[a];
- •2 Постановка завдання
- •3 Методичні вказівки
- •4 Приклад виконання практичної роботи Завдання
- •Програма розв'язку
- •5 Контрольні запитання
- •Практична робота № 4
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальни х завдань
- •4 Методичні вказівки
- •5 Приклад виконання практичної роботи
- •6 Контрольні запитання
- •Практична робота № 5
- •1 Короткі теоретичні відомості
- •Void func( ) /*нічого не повертає*/
- •2 Варіанти індивідуальних завдань
- •3 Методичні вказівки
- •4 Приклад виконання лабораторної роботи
- •5 Контрольні запитання
- •Практична робота № 6
- •1 Короткі теоретичні відомості
- •2 Постановка завдання
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •2 Завдання практичної роботи:
- •3 Варіанти індивідуальних завдань
- •4 Методичні вказівки
- •5 Приклад виконання лабораторної роботи
- •Програма розв'язку
- •4 Контрольні запитання
- •Список рекомендованої літератури
4 Приклад виконання лабораторної роботи
1. Задано двовимірний масив з цілими елементами, розмірності (4x4), кожен елемент, значення якого лежить на відрізку [5;10], зменшити на 7, всі інші елементи збільшити на 7. Новий масив вивести на екран.
Текс програми мовою С
#include <stdio.h>
int i, j:
int A[4][4]={1, 4, 3, 7 -8, 5, 3, 0, 56, 34, -6,45, 45, 12, 0, 46};
int B[4][4];
void main()
{
printf («Programa Lab_4\n»);
for (i=0; i<4; i=i+1)
for (j=0; j<4; j=j+1)
{
if ((A[i][j]>=5) && (A[i][j]<=10)) B[i][j]= A[i][j]-7;
else
B[i][j]= A[i][j]+7;
}
for (i=0; i<4; i=i+1)
{
for (j=0; j<4; j=j+1)
printf(“B[%d][%d]=%d\t”, i, j, B[i][j]);
printf (“\n”);
}
}
2.
Задати
дві квадратні матриці А і В розміром
3
3
(двовимірні масиви), елементами яких є
цілі числа. Обчислити матрицю С за
формулою
.
Матрицю С вивести на екран.


Програма розв'язку
#include<stdio.h>
#include<conio.h>
int A[3][3]={{1,3,1},{3,5,2},{1,4,4}};
int B[3][3]={{-1,3,-1},{-3,5,-2},{-1,4,-3}},C[3][3],i,j;
void main() { clrscr();
for(i=0;i<3;i++) {
for(j=0;j<3;j++) { C[i][j]=B[i][j]-A[i][j]+A[j][i]; printf("%d\t",C[i][j]);}
printf("\n"); }
}
Результат: ь -1 3 -1
-3 5 0
- 1 2 -3
5 Контрольні запитання
Що таке двовимірний масив?
Яке значення має індекс 1-го елементу двовимірного масиву
Які типи даних можна використати для опису масивів ?
Яке значення має індекс останнього елементу двовимірного масиву, коли він має 5*5 елементів?
Написати фрагмент програми для виводу на екран елементів двовимірного масиву розмірністю 9*9;
Задати при описі елементи масиву 3*3 з цілими елементами.
Лабораторна робота № 8
Тема:Складання програм на сортування масивів. Пошук у відсортованому масиві
Мета: Навчитись сортувати числові масиви по зростанню або спаданню та здійснювати в них пошук заданих елементів.
1 Короткі теоретичні відомості
Сортування масивів. Сортування - це процес перегрупування заданої множини об'єктів у деякому встановленому порядку. Числові масиви сортуються зазвичай по зростанню або по спаданню. Масиви символьних змінних можуть сортуватися по алфавіту.
Сортування масивів розподіляються за швидкодією. Існують прості методи сортування, які вимагають n*n операцій порівняння, де n - кількість елементів масиву. Швидкі методи сортування вимагають n*ln(n) операцій порівняння. Прості методи зручні для пояснення принципів сортування, тому що вони мають прості й короткі алгоритми. Ускладнені методи вимагають меншої кількості операцій порівняння, але алгоритм більш складніший, тому для невеликих масивів прості методи більш ефективні. Складні методи дають ефект для масивів великих розмірів.
Прості методи поділяють на три основні категорії:
сортування масивів методом простого включення;
сортування масивів методом простого вибору;
сортування масивів методом простого обміну.
Сортування масивів методом простого включення (вставки). При застосуванні даного методу для сортування масивів елементи масиву діляться на вже готову відсортовану послідовність і початкову. При кожному кроці, починаючи з і=2, з початкової послідовності витягується 1- ий елемент і вставляється на потрібне місце готової послідовності, потім і збільшується на 1, витягується 2-ий елемент і вставляється на потрібне місце готової послідовності і т.д.
|
44 |
55 |
12 |
42 |
94 |
18 |
|
готова |
початкова |
|
|
|
|
|
44 |
55 |
12 |
42 |
94 |
18 |
|
12 |
44 |
55 |
42 |
94 |
18 |
|
12 |
42 |
44 |
55 |
94 |
18 |
|
12 |
18 |
42 |
44 |
55 |
94 |
У процесі пошуку потрібного місця здійснюються пересилання елементів більше обраного на одну позицію вправо, тобто обраний елемент порівнюють із черговим елементом відсортованої частини, починаючи з J:=I-1. Якщо обраний елемент більше a[I], то його включають у відсортовану частину, в іншому випадку a[J] зсувають на одну позицію, а обраний елемент порівнюють із наступним елементом відсортованої послідовності. Процес пошуку потрібного місця закінчується при двох різних умовах:
якщо знайдено елемент a[J]>a[I];
досягнуть лівий кінець готової послідовності.
Нижче наведено фрагмент програми для сортування методом простого включення.
int i,j,x;
for(i=1;i<n;i++)
{
x=a[i];//запам'ятали елемент, що будемо вставляти
j=i-1;
while(x<a[j]&&j>=0)//пошук потрібного місця
{
a[j+1]=a[j];//зсув вправо
j--;
}
a[j+1]=x;//вставка елемента }
Сортування масивів методом простого вибору. Не обмежуючи загальності, будемо розглядати сортування масиву по зростанню, тобто будемо на початок масиву ставити мінімальний елемент. Суть методу простого вибору полягає в наступному. Вибирається мінімальний елемент масиву й міняється місцями з першим елементом масиву. Потім процес повторюється з елементами, що залишилися, і т.д. Процес сортування елементів масиву проілюстровано в табл. 8.1.
Таблиця 8.1. Процес сортування елементів масиву методом простого вибору
|
44 |
55 |
12 |
5 |
2 min |
94 |
18 |
|
2 |
55 |
12 |
5 min |
44 |
94 |
18 |
|
2 |
5 |
12 min |
55 |
44 |
94 |
18 |
|
2 |
5 |
12 |
55 |
44 |
94 |
18 min |
|
2 |
5 |
12 |
18 |
44 min |
94 |
55 |
|
2 |
5 |
12 |
18 |
44 |
94 |
55 min |
|
2 |
5 |
12 |
18 |
44 |
55 |
94 |
Фрагмент програми для сортування методом простого вибору.
int i,min,n_min,j;
for(i=0;i<n-1;i++)
{min=a[i];n_min=i;//пошук мінімального
for(j=i+1;j<n;j++)
if(a[j]<min){min=a[j];n_min=j;}
a[n_min]=a[i];//обмін
a[i]=min; }
Сортування масивів методом простого обміну. Суть методу простого вибору полягає в наступному. Порівнюються й міняються місцями пари елементів, починаючи з останнього. У результаті перейменування елемент масиву виявляється най лівішим елементом масиву. Процес повторюється з елементами, якізалишились. Процес сортування елементів масиву проілюстровано в табл. 8.2.
Таблиця 8.2. Процес сортування елементів масиву методом простого обміну
|
44 |
55 |
12 |
5 |
2 |
18 |
94 |
|
44 |
55 |
12 |
2 |
5 |
18 |
94 |
|
44 |
55 |
2 |
12 |
5 |
18 |
94 |
|
44 |
2 |
55 |
12 |
5 |
18 |
94 |
|
2 |
44 |
55 |
12 |
5 |
18 |
94 |
|
2 |
44 |
55 |
5 |
12 |
18 |
94 |
|
2 |
44 |
5 |
55 |
12 |
18 |
94 |
|
2 |
5 |
44 |
55 |
12 |
18 |
94 |
|
2 |
5 |
44 |
12 |
55 |
18 |
94 |
|
2 |
5 |
12 |
44 |
55 |
18 |
94 |
|
2 |
5 |
12 |
44 |
18 |
55 |
94 |
|
2 |
5 |
12 |
18 |
44 |
55 |
94 |
Наведемо фрагмент програми для сортування методом простого обміну.
for(int i=1;i<n;i++)
for(int j=n-1;j>=i;j--)
if(a[j]<a[j-1])
{int r=a[j];a[j]=a[j-1];a[j-1]=r;} }
Пошук у відсортованому масиві. У відсортованому масиві використовується дихотомічний (бінарний) пошук. При послідовному пошуку потрібно в середньому n/2 порівнянь, де n – кількість елементів у масиві. При дихотомічному пошуку потрібно не більше m порівнянь, якщо n- m-а ступінь 2, якщо n не є ступенем 2, то n<k=2m.
Масив ділиться навпіл S:=(L+R)/ 2+1 і визначається в якій частині масиву перебуває потрібний елемент Х. Так як масив упорядкований, те якщо a[S]<X, те шуканий елемент перебуває в правій частині масиву, інакше - перебуває в лівій частині. Обрану частину масиву знову треба розділити навпіл і т.д., доти, поки границі відрізку L й R не стануть рівні.
Нижче наведено фрагмент програми для пошуку у відсортованому масиві.
S=(L+R)/2=4
int b;
cout<<"\n=?";cin>>b;
int l=0,r=n-1,s;
do
{
s=(l+r)/2;//середній елемент
if(a[s]<b)l=s+1;//перенести ліву межу
else r=s;//перенести праву межу
}while(l!=r);
if(a[l]==b)return l;
else return -1;
