Поняття та алгоритми обробки двовимірних масивів
Визначення двовимірних масивів. Розміщення елементів на головній та бічній діагоналі. Алгоритми обробки двовимірних масивів. Двовимірні масиви в задачах лінійної алгебри. Ініціалізація елементів матриці за допомогою генератора псевдовипадкових чисел.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | украинский |
Дата добавления | 02.12.2014 |
Размер файла | 162,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
БУКОВИНСЬКИЙ ДЕРЖАВНИЙ ФІНАНСОВО-ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
Кафедра комп'ютерних наук
Індивідуальне навчально-дослідне завдання
на тему
«Поняття та алгоритми обробки двовимірних масивів»
Виконала:
студентка групи КН-11
Кицун Т.М.
Чернівці - 2014
План
1. Визначення та ініціалізація двовимірних масивів.
2. Ознаки розміщення елементів на головній та бічній діагоналі.
3. Алгоритми обробки двовимірних масивів.
4. Двовимірні масиви в задачах лінійної алгебри.
1. Визначення та ініціалізація двовимірних масивів
Всі ми знаємо, що таке одновимірні масиви. Вони нагадують полицю з книгами. Може бути більше книг на більш довшій полиці або ж менше книг - на більш коротшій полиці. Таким чином, полиця - єдина розмірність, що визначає її ємність, отже, вона є одновимірною. Але що, якщо тепер потрібно використати масив для моделювання сонячних панелей, як показано на рисунку 1? Сонячні панелі, на відміну від книжних полиць, поширюються у двох розмірностях: по довжині і по ширині.
Як можна помітити на рис.1, шість сонячних панелей розташовуються в двовимірному порядку: два ряди по три стовпці. З одного боку, ви можете розглядати таке розташування, як масив з двох елементів, кожен з яких сам є масивом з трьох панелей, іншими словами, як масив масивів. У мові C ++ ви можете створювати двовимірні масиви, але ви не обмежені тільки двома розмірностями. Залежно від необхідності і характеру програми, ви можете також створити в пам'яті багатовимірні масиви.
Ініціалізація двовимірних масивів.
Мова C ++ дозволяє оголошувати багатовимірні масиви, вказавши кількість елементів, яку необхідно зарезервувати по кожній розмірності. Отже, двовимірний масив цілих чисел, що являє сонячні панелі на рис.1, можна оголосити так:
int SolarPanell [2][3];
Зверніть увагу, що на рис.1 кожному з шести панелей присвоєно також ідентифікатор в межах від 0 до 5. Якби довелося ініціалізувати цілочисельний масив в тому ж порядку, то це виглядало б так:
int SolarPanell [2][3] = {{0, 1, 2}, {3, 4, 5}};
Як бачите, синтаксис ініціалізації подібний використовуваному при ініціалізації двох одновимірних масивів. Зверніть увагу: це не два масиви, оскільки массив двовимірний, це два його рядки. Якби цей масив складався з трьох рядків і трьох стовпців, його оголошення і ініціалізація виглядали б наступним чином:
int Threemass [3][3] = {{4, 3, 7}, {1, 2, 5}, {9, 8, 6}};
Такі масиви називаються статичними (static array), оскільки кількість елементів, що в них містяться, а також розмір їх області в пам'яті залишаються незмінними під час компіляції.
ПРИМІТКА. Навіть при тому, що мова C++ дозволяє використовувати модель багатовимірних масивів, в пам'яті масив міститься як одновимірний. Компілятор розкладає багатовимірний масив в області пам'яті, яка розширюється тільки в одному напрямку.
Масив визначається двома розмірами, які укладені в квадратні дужки:
double massiv [i][j];
Можна вважати massiv двовимірним масивом, схожим на шахову дошку. Іншими словами, можна сказати, що цей масив є масивом масивів. Це масив елементів i, кожен з яких є массивом елементів j. На рис.2 показано, як це виглядає.
двовимірний масив алгоритм матриця
В цілому багатовимірний масив оголошується у програмі в такий спосіб:
<тип> <ім'я масиву> [ <розмір1>] [ <розмір2>] … [ <розмірN>];
Для того, щоб елементи масиву ми могли вводити з клавіатури, потрібно ввести такий код:
cout<<"n, m="; //запитуємо n(кількість рядків), m(кількість стовпців);
cin>>n>>m; //вводимо n,m;
for(i=0;i<n;i++)
for(j=0;i<m;j++)
cin>>a[i][j]; //вводимо елементи масиву;
Аналогічно можна використати оператор rand() для ініціалізації елементів матриці за допомогою генератора псевдовипадкових чисел.
Для виведення двовимірного масиву на екран використовуються наступні оператори:
for(i=0;i<n;i++)
{
for(j=0;i<m;j++)
cout<<a[i][j]<<” “;
cout<<endl;
}
Приклад.
Дано матрицю А розмірності NxN. Заповнити її за допомогою генератора псевдовипадкових чисел в діапазоні [-5; 5]. Знайти суму додатних елементів.
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main ()
{
setlocale (LC_CTYPE,”rus”);
int A[20][20], i,j,S=0,N;
cout <<"Введіть N: "; //вводимо розмірність матриці;
cin>>N;
for (i=0;i<N;i++) /*заповнюємо матрицю за допомогою генератора псевдовипадкових чисел;*/
for (j=0;j<N;j++)
A[i][j]=rand()%-11-5;
cout<<"Матриця A: "<<endl;
for (i=0;i<N;i++) //виводимо матрицю на екран;
{
for (j=0;j<N;j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}
for (i=0;i<N;i++) //знаходимо додатні елементи і їх суму;
{
for (j=0;j<N;j++)
if (A[i][j]>0)
{
S=S+A[i][j];
}
}
cout<<"Сума додатних елементів - "<<S;
getch ();
return 0;
}
2. Ознаки розміщення елементів на головній та бічній діагоналі
Багато задач по двовимірним масивам пов'язана із використанням елементів, що розміщена на головній чи бічній діагоналях матриці або ж вище чи нижче них. На рисунку 3 зображено діагоналі і рівності.
¦ Якщо елемент знаходиться на головній діагоналі, тоді номер рядка має дорівнювати номеру стовпця (i=j).
¦ Якщо ж елемент знаходиться на бічній діагоналі, тоді сума індексів має дорівнювати розмірності елементів, від якої відняли 1, тобто має задовольняти рівність «i+j=N-1».
¦ Якщо елементи знаходяться нижче головної діагоналі, то номер рядка елемента має бути більшим за номер стовпця(i>j).
¦ Якщо елемент знаходиться вище головної діагоналі, то номер рядка елемента має бути менший за номер стовпця елемента (i<j).
¦ Якщо потрібні елементи знаходяться над бічною діагоналлю, тоді індекси мають задовольняти таку рівність «i + j +1 < N».
Якщо ж елементи знаходяться нижче головної діагоналі, тоді задовольняється така рівність «i+j+1>N».
Приклад.
Дано матрицю розмірності NxN. Заповнити матрицю, вивести елементи головної та бічної діагоналей. Знайти середнє арифметичне суми їх елементів.
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main ()
{
setlocale (LC_CTYPE,"rus");
int i, j, HD, BD,sum=0;
double n,ser;
float A[50][50];
cout<<"n= ";
cin>>n;
cout<<"Введіть елементи матриці A: "<<endl;
for (i=0;i<n;i++) // знаходимо елементи головної діагоналі
for (j=0;j<n;j++)
cin>>A[i][j];
cout<<"Елементи головної діагоналі: ";
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
if (i==j)
{
cout<<A[i][j]<<" ";
sum=sum+A[i][j];
}
}
cout<<endl;
cout<<"Елементи бічної діагоналі: ";
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (i+j+1==n)
{
cout<<A[i][j]<<" ";
sum=sum+A[i][j];
}
cout<<endl;
ser=sum/n;
cout<<"Середнє геометричне суми елементів діагоналей = "<<ser;
getch ();
return 0;
}
3. Алгоритми обробки двовимірних масивів
Існує багато різноманітних задач з використання двовимірних масивів. Що ж можна робити з двовимірними масивами. Ось перелік декількох операцій:
¦ створення нового масиву за заданим алгоритмом;
¦ пошук елементів масиву за заданими параметрами;
¦ визначення, чи задовольняє двовимірний масив або окремі його елементи певній властивості;
¦ виконання певних операцій над компонентами двовимірного масиву (переставляння рядків і стовпців, множення матриць, знаходження окремих елементів тощо).
4. Двовимірні масиви в задачах лінійної алгебри.
В лінійній алгебрі двовимірні масиви зазвичай називають матрицями. Над матрицями як і над числами, можна виконувати ряд дій, причому всі з них можливо запрограмувати. (Знаходження визначника, множення матриць, піднесення до степеня, транспонування тощо). Наведемо один приклад використання двовимірних масивів в лінійній алгебрі.
Приклад.
Дано дійсну матрицю А розмірності nxn. Транспонувати матрицю та вивести її на екран. Помножити транспоновану матрицю на введене з клавіатури число k та вивести готову матрицю на екран.
#include <iostream>
#include <conio.h>
#include <clocale>
#include <math.h>
using namespace std;
int main ()
{
setlocale (LC_CTYPE,"rus");
int i, j, k, n;
float A[50][50];
cout<<"n= ";
cin>>n;
cout<<"k= ";
cin>>k;
cout<<"Введіть елементи матриці A: "<<endl;
for (i=0;i<n;i++) //вводимо початкову матрицю;
for (j=0;j<n;j++)
cin>>A[i][j];
cout<<"Транспонована матриця: "<<endl;
for (i=0;i<n;i++) //виводимо транспоновану матрицю;
{
for (j=0;j<n;j++)
{
cout<<A[j][i]<<" "; /*для цього достатньо вивести матрицю в зворотному порядку*/
}
cout<<endl;
}
for (i=0;i<n;i++) //множимо матрицю на число k;
{
for (j=0;j<n;j++)
{
A[i][j]=A[j][i]*k;
}
}
cout<<"Помножимо транспоновану матрицю на число k: "<<endl;
for (i=0;i<n;i++) //виводимо готову матрицю на екран;
{
for (j=0;j<n;j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}
getch ();
return 0;
}
Використана література
1. Лафоре Р. "Объектно-ориентированное программирование в С++" (2004)
2. С. Рао "Освой самостоятельно C++ за 21 день" (2013)
3. "Учимся программировать на С++ вместе с Джоном Смайли" (2014)
4. А.І. Скицько, «Лінійна алгебра та аналітична геометрія»(2003)
Размещено на Allbest.ru
Подобные документы
Приклад реалізації крок за кроком методу сортування масивів "бульбашка", характеристика етапів. Графічне представлення методу, фрагмент програми його реалізації. Алгоритми сортування масивів методами вибору та вставок, опис особливостей їх реалізації.
презентация [824,2 K], добавлен 26.11.2014Програмування лінійних процесів, процесів з розгалуженням, регулярних циклічних процесів, ітераційних процесів. Одномірні масиви. Впорядкування одномірних масивів. Двовимірні масиви. Алгоритм лінійних обчислювальних процесів. Програми на мові Pascal.
лабораторная работа [96,6 K], добавлен 05.11.2008Характеристика швидкодії алгоритмів сортування масивів прямим і бінарним включенням, методами "бульбашки", "камінця", та шейкерного відбору, визначення їх переваг та недоліків. Огляд функцій сортування із стандартної бібліотеки мови програмування С++.
курсовая работа [452,1 K], добавлен 16.09.2010Порядок обробки матриць. Обчислювання, надрукування елементів матриці С, кожен елемент якої дорівнює сумі відповідних елементів матриць А і В. Знаходження середнього значення серед усіх елементів масиву С. Розрахунок значень функцій на заданому інтервалі.
контрольная работа [215,4 K], добавлен 12.09.2010Циклічний зсув на одну позицію елементів першої половини послідовності. Вилучення з послідовності елементів кратних заданій величині. Обмін між собою елементів двох послідовностей та слідуючих за ними елементів. Копіювання однієї послідовності в іншу.
лабораторная работа [1,7 M], добавлен 26.04.2021Особливості методів сортування масивів прямим та бінарним включенням. Порівняльна характеристика швидкодії алгоритмів сортування способами включення із зменшуваними швидкостями, обміну на великих відстанях, вибору при допомозі дерева (Тree і Heap Sorts).
курсовая работа [58,9 K], добавлен 16.09.2010RAID - масив з декількох дисків, керованих контролером, взаємопов'язаних швидкісними каналами. Рівні RAID масивів: переваги та недоліки. Кількість жорстких дисків в комбінованих масивах. Розподіл файлів по JBOD-масиву. Мережеві системи зберігання даних.
контрольная работа [1,6 M], добавлен 15.03.2013Поняття та класифікація технологічних операцій, їх склад і зміст, порядок організації їх виконання в економічних інформаційних системах. Технологія створення і ведення інформаційних масивів. Методика обробки інформації з ціноутворення та прибутків.
реферат [34,8 K], добавлен 27.07.2009Бібліотеки для дій з розрядно-логарифмічними діями. Перевірка оберненої матриці за допомогою одиничної у розрядно-логарифмічній формі. Код розрахунку оберненої матриці за методом Крамера. Алгоритми додавання, віднімання, множення, ділення чисел у РЛ.
курсовая работа [18,6 K], добавлен 17.10.2013Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.
лекция [411,2 K], добавлен 24.07.2014