![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
1. Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
№ п/п | Алгоритм впорядкування матриці | Алгоритм для розрахунку fi(aij) та F(fi(aij)) | Матриця | |
Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки | fi(aij)-максимальний елемент у кожному рядку матриці; F(fi(aij))-сума fi(aij). | -12 7 23 13 4 67 15 34 -5 9 2 5 17 -23 45 26 -6 23 -5 -9 18 37 -8 26 12 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом обміну | fi(aij)-мінімальний елемент у кожному стовпці матриці; F(fi(aij))-добуток fi(aij) | 34 -8 27 7 12 -5 23 45 67 -2 13 -12 34 -3 25 17 56 -6 17 21 0 15 4 9 -14 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору | fi(aij)-сума елементів у кожному рядку матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 2 0 33 -1 -21 78 7 -4 -3 11 -2 -7 -1 -9 0 13 61 60 42 -10 1 0 4 0 16 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки | fi(aij)-добуток елементів у кожному стовпці матриці; F(fi(aij))-середнє арифме-тичне значення fi(aij) | 90 7 89 -2 17 1 -4 8 56 32 -4 -6 –99 19 39 2 4 -7 0 75 11 41 22 80 -5 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну | fi(aij)-середнє арифметичне значення елементів у кожному рядку матриці; F(fi(aij))-добуток fi(aij) | 40 72 6 92 98 18 -33 -48 81 26 1 -4 6 -2 0 36 9 0 4 1 -55 2 66 70 -3 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вибору | fi(aij)-середнє геометричне значення елементів у кожному стовпці матриці; F(fi(aij))-сума fi(aij) | -3 -5 –45 -71 -5 0 1 3 2 7 11 9 45 0 4 9 19 55 44 90 -3 -4 –1 -5 0 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки | fi(aij)-добуток елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 6 34 12 70 -1 -7 97 80 99 -99 1 6 -3 2 -8 3 33 -1 0 -78 -3 -5 -8 -56 -23 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-сума елементів у кожному стовпці над головною діагоналлю матриці; F(fi(aij))-добуток fi(aij) | 9 67 –65 45 1 12 61 48 -5 -1 0 39 0 41 2 36 95 -8 -5 0 11 22 71 3 63 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом вибору | fi(aij)-сума елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 44 -2 -5 38 –91 2 0 6 3 22 13 1 -4 90 11 -3 -6 -98 -23 -24 10 34 32 31 69 | ||
Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну | fi(aij)-добуток елементів у кожному рядку під допоміжною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) | -1 -5 -47 -8 -1 -4 -98 –90 -45 -78 -3 -2 -5 -9 -4 -8 -67 –33 -91 -40 -2 -58 –11 -65 -77 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом вставки | fi(aij)-середнє арифметичне значення елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-добуток fi(aij) | 1 16 21 11 6 2 17 22 12 7 3 18 23 13 8 4 19 24 14 9 5 20 25 15 10 | ||
Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну | fi(aij)-середнє геометричне значення елементів в кожному рядку над головною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 0 2 -2 89 21 -1 -4 36 41 71 56 93 51 -2 -51 1 3 -8 0 9 23 41 5 8 -2 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки | fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-добуток fi(aij) | 12 46 –23 72 -5 59 7 -8 0 67 7 -8 -4 -97 -55 77 -1 -5 34 -8 0 22 27 24 24 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом обміну | fi(aij)-сума елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij)) -середнє геометричне значення fi(aij) | 87 98 57 29 95 -8 59 -2 9 -11 6 10 20 59 -23 12 13 51 46 -7 -2 87 69 90 -3 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору | fi(aij)-добуток елементів у кожному рядку над головною діагоналлю; F(fi(aij))-середнє арифметичне значення fi(aij) | 50 98 -4 85 -8 40 73 -2 -9 -19 1 6 73 21 0 0 25 2 -5 -3 99 19 95 92 -7 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки | fi(aij)-сума елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 3 5 9 24 2 -23 0 37 29 10 0 1 4 -2 -5 -5 -83 –74 82 -1 11 88 -5 81 -39 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну | fi(aij)-середнє геометричне значення елементів у кожному рядку матриці; F(fi(aij))-середнє арифметичне значення fi(aij) | 66 21 -3 -1 90 1 74 -2 80 -1 10 30 20 -50 91 2 4 5 81 0 33 69 -5 51 24 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вибору | fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю; F(fi(aij))- добуток fi(aij) | 33 -5 -9 -20 -11 0 -42 86 83 71 -6 -9 33 13 22 52 -5 -7 53 19 -3 98 72 68 0 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки | fi(aij)-середнє геометричне значення елементів у кожному рядку над головною діагоналлю; F(fi(aij))-сума fi(aij) | 34 45 65 23 98 1 -4 67 -3 -18 23 -5 -1 94 -25 2 24 –4 79 -63 10 29 25 30 -6 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-добуток елементів у кожному стовпці під головною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) | 19 62 –45 -1 84 23 54 -4 -2 68 36 39 96 94 97 -3 -8 -4 -6 -22 98 -5 -3 0 11 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору | fi(aij)-добуток елементів у кожному рядку над допоміжною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 22 41 45 -45 -49 5 1 3 -2 0 34 97 48 72 -1 -3 -7 5 92 20 0 -3 -57 9 1 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-середнє арифметичне значення елементів у кожному стовпці матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 30 31 36 63 -2 2 24 -3 -7 -1 45 28 -98 2 -8 0 -1 -2 -3 93 11 10 72 85 66 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки | fi(aij)-сума елементів у кожному рядку над головною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 31 65 –83 -2 -85 9 -2 11 -4 70 52 73 -8 -1 60 57 83 -1 82 50 1 -3 -2 78 -9 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-добуток елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) | 10 32 1 -8 -1 2 4 91 -82 96 33 62 -1 -8 0 5 -5 6 -6 7 -19 0 3 -22 -3 | ||
Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки | fi(aij)-середнє геометричне значення елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 9 24 -2 86 -3 40 49 -4 -3 0 27 -76 77 -1 69 71 -89 -94 -51 50 2 96 42 36 -1 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом обміну | fi(aij)-середнє арифметичне значення елементів в кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 7 6 -2 89 21 -1 -4 11 41 71 56 87 51 -3 -51 1 3 -8 9 6 12 33 2 3 -2 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки | fi(aij)-сума елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij)) -середнє геометричне значення fi(aij) | 87 98 57 29 95 18 59 20 9 11 6 10 20 59 -23 12 13 51 46 17 12 87 69 90 23 | ||
Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну | fi(aij)-середнє арифметичне значення елементів у кожному рядку матриці; F(fi(aij))-добуток fi(aij) | 66 21 -3 -1 90 1 74 -2 80 -1 10 30 20 -50 91 2 4 5 81 0 33 69 -5 51 24 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору | fi(aij)-середнє геометричне значення елементів у кожному рядку над головною діагоналлю; F(fi(aij))-сума fi(aij) | 34 45 65 23 98 1 -4 67 -3 -18 23 -5 -1 94 -25 2 24 –4 79 -63 10 29 25 30 -6 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом вибору | fi(aij)-сума елементів у кожному рядку над допоміжною діагоналлю матриці; F(fi(aij))-добуток fi(aij) | 22 41 45 -45 -49 5 1 3 -2 0 34 97 48 72 -1 -3 -7 5 92 20 0 -3 -57 9 1 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-середнє арифметичне значення елементів у кожному стовпці матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 30 31 36 63 -2 2 24 -3 -7 -1 45 28 -98 2 -8 0 -1 -2 -3 93 11 10 72 85 66 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом обміну | fi(aij)-добуток елементів у кожному стовпці під допоміжною діагоналлю матриці; F(fi(aij))-середнє арифметичне значення fi(aij) | 10 32 1 -8 -1 2 4 91 -82 96 33 62 -1 -8 0 5 -5 6 -6 7 -19 0 3 -22 -3 | ||
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки | fi(aij)-добуток елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij) | 6 34 12 70 -1 -7 97 80 99 -99 1 6 -3 2 -8 3 33 -1 0 -78 -3 -5 -8 -56 -23 | ||
Впорядкувати елементи рядків матриці за зростанням їх значень методом вибору | fi(aij)-сума елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-середнє геометричне значення fi(aij) | 44 -2 -5 38 –91 2 0 6 3 22 13 1 -4 90 11 -3 -6 -98 -23 -24 10 34 32 31 69 | ||
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки | fi(aij)-добуток елементів у кожному стовпці матриці; F(fi(aij))-середнє арифме-тичне значення fi(aij) | 90 7 89 -2 17 1 -4 8 56 32 -4 -6 –99 19 39 2 4 -7 0 75 11 41 22 80 -5 |
ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 4
ОБРОБКА СИМВОЛЬНИХ РЯДКІВ. РОБОТА З ФАЙЛАМИ
Мета роботи – вивчити елементи мови Сі, рядки, рядкові константи, принципи потокового вводу-виводу, стандартні файли і функції для роботи з ними.
КОРОТКІ ТЕОРЕТИЧНІ ДАНІ
1.1. Ввід-вивід.
В стандарті мови Сі відсутні засоби вводу-виводу. Всі операції вводу-виводу реалізуються за допомогою функцій, які знаходяться в бібліотеці мови Сі, яка є в складі конкретної версії системи програмування Сі. Особливістю мови Сі є відсутність заздалегідь спланованих структур файлів. Всі файли розглядаються як неструктурована послідовність байтів. Такий підхід до організації файлів дозволив розповсюдити поняття файлу на різні пристрої. Таким чином одні і ті ж функції бібліотеки мови Сі використовуються як для обміну даними з файлами, так і для обміну з пристроями.
Бібліотека мови Сі підтримує три рівні вводу-виводу: потоковий ввід-вивід, ввід-вивід нищого рівня і ввід-вивід для консолі і портів. Останній рівень забезпечує зручний спеціалізований обмін даними з монітором і портами вводу-виводу.
1.2. Потоковий ввід-вивід
На рівні потокового вводу-виводу обмін даними відбувається побайтно. Такий ввід-вивід можливий як для власне пристроїв побайтного обміну (друкуючі пристрої, монітор), так і для файлів на диску, хоча пристрої зовнішньої памяті є пристроями поблочного обміну, тобто за одне звернення до пристрою відбувається зчитування чи запис фіксованої порції даних. Найчастіше мінімальною порцією даних, яка приймає участь в обміні даних, є блок розміром 512 байт або 1024 байт. При вводі з диску (при читанні з файлу) дані розміщуються в буфер операційної системи, а потім побайтно або певними частинами передаються програмі користувача.
Функції бібліотеки вводу-виводу мови Сі, які підтримують обмін даними з файлами на рівні потоку, дозволяють обробляти дані різних розмірів і форматів, забезпечуючи при цьому буферизований ввід і вивід. Таким чином, потік – це файл разом з доступними засобами буферизації.
Працюючи з потоком можна виконувати наступні дії:
- відкривати і закривати потоки (звязувати вказівники на потоки з конкретними файлами);
- вводити і виводити: символ, рядок, форматовані дані, порцію даних будь-якої довжини;
- аналізувати помилки потокового вводу-виводу і умови досягнення кінця потоку (кінця файлу);
- керувати буферизацією потоку і розміром буферу;
- отримувати і встановлювати вказівник (індикатор) поточної позиції в потоці.
Для того щоб можна було використовувати функції бібліотеки вводу виводу мови Сі, в програму необхідно підключити заголовочний файл stdio.h (#include<stdio.h>), який містить прототипи функцій вводу-виводу, а також визначення констант, типів і структур, необхідних для роботи функцій обміну з потоком.
1.3. Відкриття і закриття потоку
Перш ніж почати роботу з потоком, його необхідно ініціалізувати, тобто відкрити. При цьому потік зв'язується в програмі зі структурою визначеного типу FILE. Визначення структурного типу FILE є в заголовочному файлі stdio.h. В структурі FILE містяться компоненти, за допомогою яких ведеться робота з потоком, зокрема: вказівник на буфер, вказівник (індикатор) поточної позиції в потоці і інша інформація.
При відкритті потоку в програму повертається вказівник на потік, який є вказівником на об'єкт структурного типу FILE. Цей вказівник ідентифікує потік у всіх наступних операціях.
Вказівник на потік, наприклад ff, повинен бути оголошений в програмі наступним чином:
#include<stdio.h>
FILE *ff;
Вказівнпик на потік набуває значення в результаті виконання функції відкриття потоку:
ff = fopen (імя_файлу, режим_відкриття);
Параметри імя_файлу і режим_відкритт є вказівниками на масив символів, які містять відповідно ім'я файлу, зв'язаного з потоком, і дані про режим відкриття. Також ці параметри можуть задаватися і безпосередньо у вигляді рядків при виклику функції відкриття файлу:
ff = fopen (“test.txt”,”r”);
де test.txt – ім'я деякого файлу, який зв'язаний з потоком.
r – визначення одного з режимів роботи з файлом (тип доступу до потоку).
Стандартно файл, який зв'язаний з потоком, можна відкрити в одному з нижче перелічених режимів:
“w” – новий текстовий файл відкривається для запису. Якщо файл вже існував, то попередній вміст витирається, файл створюється по новому;
“r” – існуючий текстовий файл відкривається лише для читання;
“a” – текстовий файл відкривається (або створюється, якщо файлу немає) для внесення в нього нової інформації (добавлення в кінець файлу). На відміну від режиму “w” режим “а” дозволяє відкривати вже існуючий файл, не знищуючи його попередньої версії, і записувати в кінець файлу;
“w+” – новий текстовий файл відкривається для запису і наступних багаторазових виправлень. Якщо файл вже існує, то попередній зміст витирається. Наступні після відкриття файлу записи і читання з нього не допустимі в будь-якому місці файлу, зокрема запис дозволений і в кінець файлу, тобто файл може збільшуватись («рости»);
“r+” – існуючий текстовий файл відкривається як для читання, так і для запису в будь-якому місці файлу; але в цьому режимі неможливий запис в кінець файлу, тобто неможливе збільшення розміру файлу;
“а+” – текстовий файл відкривається або створюється (якщо файлу немає) і стає доступним для змін, тобто для запису і для читання в будь-якому місці; при цьому на відміну від режиму “w+” можна відкрити існуючий файл і не знищувати його змісту; на відміну від режиму “r+” в режимі “а+” можна робити запис в кінець файлу, тобто збільшувати його розміри.
Потік можна відрити в текстовому або в двійковому (бінарному) режимі.
При відкритті потоку можуть виникати наступні помилки: вказаний файл, зв'язаний з потоком, не знайдений (для режиму «читання»); диск заповнений або диск захищений від запису і ін. Необхідно також відмітити, що при виконанні функції fopen() відбувається виділення динамічної пам'яті. При її відсутності встановлюється ознака помилки “Not enough memory” (недостатньо пам'яті). В перелічених випадках вказівник на потік в будь-якому режимі, відмінному від аварійного, ніколи не буває рівним NULL.
Наведемо типову послідовність операторів, яка використовується при відкритті файлу, зв'язаного з потоком:
if ((ff = fopen(“test.txt”, “w”)) == NULL)
{
perror(“помилка відкриття файлу test.txt \n”);
Дата публикования: 2015-01-13; Прочитано: 1496 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!