Програмування задач обробки масивів даних

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Інші
Предмет:
Основи інформаційних технологій та програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Програмування задач обробки масивів даних "Основи інформаційних технологій та програмування" Затверджено на засіданні кафедри автоматизації теплових і хімічних процесів Протокол № 2 від 18 вересня 2008 р. Львів 2008 Мета роботи: засвоєння типових алгоритмів та програмування задач обробки масивів даних. Основні відомості для виконання обробки масивів Для розв’язування задач, пов’язаних із перетворенням (обробкою) масивів необхідно вміти представити вихідну задачу як сукупність більш простих задач, розв’язання яких є відомим. Нижче будуть представлені фрагменти типових задач, необхідних для розв’язання індивідуальних завдань до КРР. Як відомо, двовимірні масиви розмірністю NN мають головну і допоміжну діагоналі. EMBED Equation.DSMT4 Індекси елементів головної діагоналі EMBED Equation.DSMT4, як видно із представлення двовимірного масиву, є однаковими. Індекси елементів ж допоміжної діагоналі міняються за іншим правилом. Знайдемо його. У першому рядку ( індекс - 0) елемент допоміжної діагоналі є - EMBED Equation.DSMT4; у другому рядку ( індекс - 1) елемент допоміжної діагоналі є - EMBED Equation.DSMT4; у третьому рядку (індекс - 2) елемент допоміжної діагоналі є - EMBED Equation.DSMT4; … в останньому рядку (індекс - N-1) елемент допоміжної діагоналі є - EMBED Equation.DSMT4. Таким чином, елемент допоміжної діагоналі, який знаходиться в і-му рядку можна записати так: EMBED Equation.DSMT4. Отже, до елементів обох діагоналей можна отримати доступ (зчитати) в одному циклі. Для вибору елементів під головною діагоналлю достатньо зауважити, що справедливе співвідношення для індексів, які відповідають за рядки і стовпчики, а саме: EMBED Equation.DSMT4. Щоби вибрати елементи масиву над головною діагоналлю, необхідно щоби їх індекси задовольняли умову: EMBED Equation.DSMT4. Для вибору елементів під допоміжною діагоналлю достатньо зауважити, що справедливе співвідношення для індексів, які відповідають за рядки і стовпчики, а саме: EMBED Equation.DSMT4. Щоби вибрати елементи масиву над допоміжною діагоналлю, необхідно щоби їх індекси задовольняли умову: EMBED Equation.DSMT4. Для знаходження max/min значення вектора/масиву (вважаємо масив вже сформованим) приймають за max/min вектора/масиву відповідно його перший елемент (EMBED Equation.DSMT4). Далі з цим значенням порівнюють наступний елемент/елементи доти, поки не зустрінеться елемент, значення якого більше/менше за значення max/min і т.д., аж до кінця вектора/масиву. На рис.2 представлені фрагменти блок-схеми алгоритмів пошуку min та max відповідно для вектора і двовимірного масиву. Рис.2. Фрагменти блок-схеми алгоритмів пошуку: а) min; б) max. а) б) EMBED Visio.Drawing.6 Примітка: У випадку необхідності здійснювати пошук max/min з одночасним формуванням масиву потрібно задати max і min в max=-1е10, а min=1е10. Обмін значень змінних (наприклад, х і у), елементів рядків (наприклад, першого і сотого) чи стовпчиків масиву здійснюється за допомогою допоміжної комірки (в даному випадку ідентифікатор допоміжної змінної temp): EMBED Equation.DSMT4 EMBED Equation.DSMT4 Фрагмент блок-схеми алгоритму обміну значень елементів першого і сотого рядків наведено на рис.3. Рис.3. Фрагмент блок-схеми алгоритму обміну елементів рядків. EMBED Visio.Drawing.6 Для формування вектора з елементів масиву за певною ознакою, необхідно використовувати індексну змінну, попередньо ініціалізовану (нулем чи -1), яку потрібно модифікувати (збільшити на 1) додаючи до вектора новий елемент. Якщо ж не модифіковувати індексної змінної формованого вектора, то наступні елементи, які потрібно записати у вектор, починаючи з другого, будуть записуватися в одну і ту ж (першу) комірку і при цьому затирати значення попередніх елементів. Рис.4. Фрагменти блок-схем алгоритмів формування вектора з: а) від’ємних елементів вектора; б) додатних елементів двовимірного масиву. а) б) EMBED Visio.Drawing.6 Парними/непарними рядками/стовпчиками масиву є ті, індекси яких при записі в програмі мовою С/С++ є відповідно непарними/парними (виключенням є перший непарний рядок/стовпчик, індекс якого є 0). Наприклад, непарними стовпчиками масиву розмірністю 55 є наступні: EMBED Equation.DSMT4. Література 1. Б.Керниган, Д.Ритчи. Программирование на языке СИ. М.: Финансы и статистика, 1992. 2. Подбельский В.В. , Фомин С.С. Программирование на языке Си. : Учебн. пособие. – 2-е доп. изд. - М.: Финансы и статистика, 1999. 3. Белецкий Я. Энциклопедия языка СИ. - М.: Мир, 1992. Примітка: В наступних завданнях, якщо не сказано про розмірність двовимірного масиву, то вважати, що вона NN. АВ-11 1) Знайти суму елементів двовимірного масиву під або над головною діагоналлю, в залежності від того, де знаходиться max елемент масиву. Якщо ж він знаходиться на головній діагоналі, тоді знайти суму її елементів. 3) Сформувати вектор із додатних елементів головної та допоміжної діагоналей двовимірного масиву. Знайти індекс min елементу вектора. 4) Знайти кількість елементів двовимірного масиву розмірністю NM, які задовольняють умову ai,j<|max|-|min| і сформувати з них вектор. 5) Сформувати вектор із min елементів непарних рядків двовимірного масиву розмірністю NM. Знайти в якому рядку min елемент є найбільшим. 6) Сформувати вектор із тих max елементів парних рядків двовимірного масиву, які більші 5. Вивести кількість елементів вектора. 7) Сформувати вектор із тих елементів двовимірного масиву розмірністю NM, які є по модулю менші трьох. Вивести той рядок, в якому є останній елемент сформованого вектора. 8) Поміняти місцями лише ті елементи головної та допоміжної діагоналей двовимірного масиву, які є одночасно більшими двох і сформувати з них вектор. 9) Поміняти місцями ті рядки двовимірного масиву, в яких є min та max масиву. Сформувати з додатніх елементів цих рядків вектор. 10) Сформувати вектор із додатних елементів тих стовпчиків двовимірного масиву, в яких є min та max масиву. Якщо ж min та max знаходяться в одному стовпчику, тоді знайти суму елементів цього стовпчика. 11) Сформувати вектор із тих значень, які є кількістю від’ємних елементів кожного стовпчика. Знайти стовпчик із мінімальною кількістю від’ємних значень. 12) Сформувати вектор із суми модулів елементів непарних рядків. Знайти рядок із найменшим значенням суми. 13) Сформувати вектор із елементів парних рядків та min значення першого стовпчика. 14) Сформувати вектор із max та min значень стовпчиків масиву. 15) Знайти max та min масиву. Сформувати вектор із тих рядків, в яких вони знаходяться. 16) Сформувати вектор із тих рядків масиву, в яких max більший трьох. 17) Сформувати вектор із max елементів головної та допоміжної діагоналей та стовпчика, в якому знаходиться min третього рядка. 18) Сформувати вектор із тих стовпчиків, в яких знаходяться min першого та останнього рядків масиву. 19) Сформувати вектор із того стовпчика, в якому сума елементів є найменшою та елементів масиву, які належать інтервалу ]-5; 2]. 20) Знайти min головної та max допоміжної діагоналей. Сформувати вектор із того рядка, в якому є min головної діагоналі і стовпчика, в якому є max допоміжної діагоналі. 21) Сформувати вектор із тих парних рядків, сума елементів яких більша 100. 22) Сформувати вектор із додатніх елементів того рядка масиву, в якому знаходиться min допоміжної та головної діагоналей. 23) Поміняти місцями max та min масиву і сформувати вектор із елементів рядків масиву, в яких вони знаходяться. АВ-12 1) Сформувати вектор із елементів рядка і стовпчика масиву, в якому знаходиться min допоміжної діагоналі. 2) найти суму елементів двовимірного масиву під або над головною діагоналлю, в залежності від того, де знаходиться min елемент масиву. Якщо ж він знаходиться на допоміжній діагоналі, тоді знайти суму її елементів. 3) Сформувати вектор із елементів головної та допоміжної діагоналей двовимірного масиву, які належать відрізку [-2; 2] . Знайти індекс max елементу вектора. 4) Знайти кількість елементів двовимірного масиву, які не задовольняють умову ai,j<max2-min4 і сформувати з них вектор. 5) Сформувати вектор із mах елементів непарних стовпчиків двовимірного масиву. Знайти рядoк в якому mах елемент є найменшим. 6) Сформувати вектор із тих mіn елементів непарних стовпчиків двовимірного масиву, які менші 3. Вивести елементи вектора. 7) Сформувати вектор із тих елементів двовимірного масиву, які є більші чотирьох. Вивести той рядок, в якому є передостанній елемент сформованого вектора. 8) Поміняти місцями лише ті елементи головної та допоміжної діагоналей двовимірного масиву, які є одночасно меншими нуля і сформувати з них вектор. 9) Поміняти місцями ті стовпчики двовимірного масиву, в яких є min та max масиву. Сформувати з від’ємних елементів цих рядків вектор. 10) Сформувати вектор із тих рядків двовимірного масиву, в яких є min та max масиву. Якщо ж min та max знаходяться в одному рядку, тоді знайти суму елементів цього рядка. 11) Сформувати вектор із тих значень, які є кількістю додатніх елементів кожного рядка. Знайти рядок із максимальною кількістю додатніх значень. 12) Сформувати вектор із суми елементів стовпчиків. Знайти той стовпчик, в якому значення суми є найбільшим. 13) Сформувати вектор із елементів непарних стовпчиків та max значення останнього рядка. 14) Сформувати вектор із max та min значень рядків масиву. 15) Знайти max та min масиву. Сформувати вектор із тих стовпчиків, в яких вони знаходяться. 16) Сформувати вектор із тих стовпчиків масиву, в яких min менший двох. 17) Сформувати вектор із min елементів головної та допоміжної діагоналей та рядка, в якому знаходиться max третього стовпчика. 18) Сформувати вектор із тих рядків, в яких знаходяться max четвертого та передостаннього стовпчиків масиву. 19) Сформувати вектор із того рядка, в якому сума модулів елементів є найменшою та елементів масиву, які належать інтервалу [-1; 1]. 20) Знайти max головної та min допоміжної діагоналей. Сформувати вектор із того стовпчика, в якому є max головної діагоналі і рядка, в якому є min допоміжної діагоналі. 21) Сформувати вектор із тих стовпчиків, сума елементів яких менша 10. 22) Сформувати вектор із елементів того рядка масиву, в якому знаходиться max допоміжної та головної діагоналей. Схема оформлення лабораторної роботи Оформлення контрольно-розрахунководї роботи повинно містити наступні розділи: - назву роботи; - завдання до лабораторної роботи; - алгоритм розв'язку задачі (блок-схему); - програму мовою С та її опис; - результати роботи програми. Додаток Приклад оформлення Програмування задач обробки масивів даних Завдання: Сформувати вектор із додатних значень двовимірного масиву (розмірністю NM), порахувати кількість додатних, від’ємних, а також рівних нулю значень елементів масиву. Вивести сформований вектор, а також кількість додатних, від’ємних, рівних нулю значень елементів масиву. Розв'язання Задаємо розмірність двовимірного масиву 54. Елементи двовимірного масиву в загальному випадку вводимо з допомогою функції scanf(). Примітка: Для швидшого відлагодження програми ініціалізуємо масив довільними значеннями при його оголошенні, а вкладені цикли по i та j, тілом яких є функція scanf(), закоментуємо. Введені іцініціалізовані змінні k=0, d=0 відповідають за нагромадження кількості додатних і від’ємних елементів масиву. В змінній z буде знаходитись кількість елементів рівних нулю, причому це значення розраховується як різниця кількості всіх елементів масиву NM і суми кількості додатних і від’ємних, які в результаті виконання програми знаходитимуться в змінних k і d. Далі перебираємо в двох циклах по i та по j (вони є вкладеними) послідовно один за одним всі елементи EMBED Equation.DSMT4 масиву. Якщо елемент EMBED Equation.DSMT4 масиву додатній, тоді його записуємо у вектор EMBED Equation.DSMT4 і після цього модифікуємо k. Оголошуючи вектор EMBED Equation.DSMT4 задаємо його розмірність N*M, враховуючи те, що може зустрітися випадок, коли всі елементи масиву додатні. Кількість від’ємних елементів бути міститися у змінній d. Після перегляду всіх елементів масиву EMBED Equation.DSMT4 виводимо сформований вектор EMBED Equation.DSMT4. Слід зауважити, що кінцеве значення керуючої змінної при виводі вектора є k-1. Після цього виводимо кількість додатних, від’ємних та рівних нулю елементів двовимірного масиву. EMBED Visio.Drawing.6 Блок-схема алгоритму розв’язування задачі #include <stdio.h> #include <conio.h> #define N 5 #define M 4 main() {int i, j, k=0, d=0, z, vec[N*M]; int a[N][M]]={{ 1, 2, 0, 14}, {11, 20, 0, 4}, {-1, -2, 1, 3}, { 3, 2, 0, 5}, {-2, 2, 1, 0} }; clrscr(); /*puts("Ввід масиву a \n"); for(i=0; i<N; i++) for(j=0; j<M; j++) scanf("%d", &a[i][j]); */ for(i=0; i<N; i++) for(j=0; j<M; j++) {if(a[i][j]>0) {vec[k]=a[i][j]; k++;} if(a[i][j]<0) d++; } puts("Вивід вектора vec\n"); for(i=0; i<k; i++) printf(" %3d ",vec[i]); z=N*M-(d+k); printf("\n d=%3d k=%3d z=%3d ", d, k, z); getchar(); return 0; } Рис. Програма формування і обробки двовимірного масиву в TC Результати виконання програми Вивід вектора vec 1 2 14 11 20 4 1 3 3 2 5 2 1 d=3 k=13 z=4
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!