Поняття та алгоритми обробки двовимірних масивів

Визначення двовимірних масивів. Розміщення елементів на головній та бічній діагоналі. Алгоритми обробки двовимірних масивів. Двовимірні масиви в задачах лінійної алгебри. Ініціалізація елементів матриці за допомогою генератора псевдовипадкових чисел.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык украинский
Дата добавления 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.2010

  • RAID - масив з декількох дисків, керованих контролером, взаємопов'язаних швидкісними каналами. Рівні 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.