- •Національний технічний університет
- •Мета роботи
- •Оператори введення/виводу
- •Лабораторна робота № 2
- •Приклад виконання завдання
- •Вибір варіанта розрахунку. Використання операторів if, else, else if Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Оператор if
- •Використання оператора else в операторі if
- •Оператор else if
- •Лабораторна робота №4
- •Циклічні алгоритми.
- •Організація циклу за допомогою операторів while і do while
- •Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Циклічний алгоритм. Організація циклу за допомогою оператора for Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Робота з масивами символів. Використання функцій getchar (), putchar () Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Робота з масивами символів. Використання операторів continue, break і функції switch () Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Оператор continue
- •Оператор break
- •Множинний вибір: функція switch ()
- •Робота з рядками Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Лабораторна робота № 9
- •Завдання
- •Вказівки до виконання завдання
- •Робота з одномірними масивами. Обчислення максимуму, мінімуму, кратність елементів
- •Сортування масиву Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Робота з двовимірними масивами. Організація введення / виводу елементів двовимірного масиву Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Лабораторна робота № 13 робота з функціями Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Придбання і закріплення практичних навичок у використанні файлового введення/виводу при складанні програми мовою с.
- •Лабораторна робота № 15
- •Робота з функціямипідпрограмами Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Лабораторна робота № 17 Програмування задач матричної алгебри Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Лабораторна робота № 18 Обчислення визначеного інтегралу Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Лабораторна робота № 19 Робота зі структурами Мета роботи
- •Завдання
- •Вказівки до виконання завдання
- •Додаток 1 Завдання до лабораторної роботи № 2
- •1. Обчислити значення виразу , якщо ,
- •Додаток 2 Завдання до лабораторної роботи № 3
- •Додаток 3 Завдання до лабораторної роботи № 4
- •Додаток 4 Завдання до лабораторної роботи № 5
- •Додаток 5 Завдання до лабораторної роботи № 6
- •Додаток 6 Завдання до лабораторної роботи № 7
- •Додаток 7 Завдання до лабораторної роботи № 8
- •Додаток 8 Завдання до лабораторної роботи № 9
- •Додаток 9 Завдання до лабораторної роботи № 10
- •Додаток 10 Завдання до лабораторної роботи № 11
- •Додаток 11 Завдання до лабораторної роботи № 12
- •Додаток 12 Завдання до лабораторної роботи № 13
- •Додаток 13
- •Додаток 14
- •Додаток 15
- •Додаток 16
- •Додаток 17
- •Додаток 18
- •Список літератури
Лабораторна робота № 15
Масиви. Дії над одномірними та двомірними масивами
з використанням файлового введення/виводу
Мета роботи
Придбання і закріплення практичних навичок у використанні масивів та файлового введення/виводу при складанні програми мовою С.
Завдання
1. В лабораторній роботі необхідно скласти алгоритм та розробити программу рішення задачі з використанням масивів та функцій файлового введення/виводу. Варіанти завдань надано в додатку 14. Номер варіанта призначається викладачем.
2. Налагодити та протестувати програму.
3. Скласти звіт про роботу.
Вказівки до виконання завдання
Масив – це кінцева сукупність даних одного типу. Можна говорити про масиви цілих чисел, масивів символів і т.д. Ми можемо навіть визначити масив, елементи якого – масиви (масив масивів), визначаючи, таким чином, багатомірні масиви. Кожен масив у програмі має бути описаний: після імені масиву додають квадратні дужки [], усередині яких звичайно знаходиться число, що показує кількість елементів масиву. Наприклад, запис int x[10]; визначає x як масив з 10 цілих чисел. У випадку багатомірних масивів показують стільки пар дужок, відповідно до розмірності масиву, а число усередині дужок показує розмір масиву за даним виміром. Наприклад, опис двовимірного масиву виглядає так: int a[2][5];. Такий опис можна трактувати як матрицю з 2 рядків і 5 стовпців. Для звернення до деякого елемента масиву вказують його ім'я й індекс, укладений у квадратні дужки (для багатомірного масиву – кілька індексів, узятих в окремі квадратні дужки): a[1][3]. Індекси масиву в С завжди починаються з 0, а не з 1, тобто опис int x[5]; породжує елементи x[0], x[1], x[2], x[3], x[4], x[5].
Початкові значення масивам у мові С можуть бути привласнені при компіляції тільки в тому випадку, якщо вони оголошені з класом пам'яті extern або static, наприклад:
static int a[6]={5,0,4,-17,49,1};
забезпечує присвоєння a[0]=5; a[1]=0; a[2]=4 ... a[5]=1. Як бачите, для початкового присвоєння значень деякому масивові треба в описі помістити праворуч від знака = список, що ініціюють значення, укладені у фігурні дужки і розділені комами. Двовимірний масив можна ініціювати так:
static int matr[2][5] = {{3,4,0,1,2},{6,5,1,4,9}};
Матриця зберігається в пам'яті рядками, тобто самий правий індекс у наборі індексів масиву змінюється швидше за все.
Приклад: Дано двомірний масив. Зробити ввід масиву з файла. Знайти максимальний елемент масиву та суму елементів кожного рядка і стовпця. Видати результат у файл.
Спочатку створюємо файл вхідних даних, для нашого приклада це massiv.txt, і записуємо масив даних:
1 2 3
4 5 6
7 8 9
#include <stdio.h>
#define m 3
#define n 3
int main (void)
{
FILE *vv,*vi;
float a[m][n], sum, sums, max=0, b;
int i, j;
vv=fopen ("massiv.txt","r"); /* відкриття файла вхідних даних. */
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fscanf(vv,"%f",&a[i][j]); /*Введення двомірного масиву із файла*/
fclose(vv); /* Закриття файла вхідних даних. */
vi=fopen("massiv.rez","w"); /*відкриття файла для запису . */
/* Запис даного масиву у файл.*/
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
fprintf(vi," %.0f",a[i][j]);
fprintf(vi,"\n"); /* запис масиву рядок-стовпець. */
}
max=a[0][0]; /*ініціалізація змінної max 1-м елементом масиву*/
for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<m;j++)
{
sum=sum+a[i][j]; /*сума елементів i-го рядка */
if(a[i][j]>max)
max=a[i][j]; /*визначення максимального ел-та масиву*/
}
/*Запис результату у файл*/
fprintf(vi,"Сума %d рядка \t %.0f\n" , i+1, sum);
}
fprintf(vi,"\n");
for(j=0;j<n;j++)
{
sums=0;
for(i=0;i<m;i++)
sums=sums+a[i][j]; /*сума елементів j-го стовпця */
/*Запис результату у файл*/
fprintf(vi,"Сума %d стовпця\t %.0f\n",j+1,sums);
}
fprintf(vi,"max=%.0f",max);
fclose(vi); /* закриття файла вихідних даних. */
return(0);
}
Результати розв’язання:
1 2 3
4 5 6
7 8 9
Сума 1 рядка 6
Сума 2 рядка 15
Сума 3 рядка 24
Сума 1 стовпця 12
Сума 2 стовпця 15
Сума 3 стовпця 18
max=9
Коментарі до програми: у програмі організовано два цикли, ініціалізація змінної sum=0 у зовнішньому циклі дає можливість обнулити попередній результат після кожної ітерації зовнішнього циклу і таким чином знайти суму елементів кожного рядка. Аналогічно визначається сума елементів кожного стовпця.
Звіт про роботу має включати стислий опис роботи, алгоритм виконання індивідуального завдання у вигляді блок–схеми, текст програми і результати її виконання.
Лабораторна робота № 16
