русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лекция 9-10


Дата добавления: 2015-08-14; просмотров: 756; Нарушение авторских прав


ОПЕРАЦИИ С МНОГОМЕРНЫМИ МАССИВАМИ В Visual С++ 2010

Цель лекции.Изучить способы и особенности работы с двухмерными массивами вVisual С++ 2010.

Основные вопросы лекции.

1.Двухмерные массивы данных и их инициализация в среде Visual С++ 2010.

2. Консольный ввод и вывод двухмерных массивов в среде Visual С++ 2010.

3. Присваивание и копирование двухмерных массивов в Visual С++ 2010.

4. Поиск элемента в двухмерных массивах в Visual С++ 2010.

5. Перестановка и сортировка элементов в двухмерных массивах.

1. Двухмерные массивы данных и их инициализация в Visual С++ 2010

Под размерностью массива понимают число индексов, которое необходимо указать для получения доступа к отдельному элементу массива. Массивы, рассмотренные в лабораторной работе № 5, например, были одномерными и требовали только одного индекса. Массивы с более чем одной размерностью, называются многомерными.

Самым простым многомерным массивом является двухмерный массив (матрица).

При объявлении массива указывается тип элементов массива, имя массива и его размер:

Тип ИмяМассива [Размер 1] [Размер 2];

Например, оператор

int А[3][8];

описывает целый двухмерный массив по имени А из 24-х целых чисел.В памяти будет зарезервировано место для 24-х целочисленных элементов массива (рис. 9.1).

В памяти компьютера двухмерный массив располагается непрерывно по строкам, то есть

А[0][0], А[0][1], А[0][2], А[0][3] … А[0][8], А[1][0], А[1][1], А[1][2], А[1][8] … А[0][8].

На рис. 9.1 приведена схема размещения элементов массива из 24-х целых чисел по имени А размерностью 3×8.В памяти будет зарезервировано место для 24-х целочисленных элементов массива, которые располагаются в непрерывном (!!!) блоке памяти.

 

А[0][0] А[0][1] А[0][2] А[0][3] А[0][4] А[0][5] А[0][6] А[0][7]


А[1][0] А[1][1] А[1][2] А[1][3] А[1][4] А[1][5] А[1][6] А[1][7]




А[2][0] А[2][1] А[2][2] А[2][3] А[2][4] А[2][5] А[2][6] А[2][7]

 

Рис. 9.1. Значения и расположение в памяти элементов массива А[3][8]

 

Массивы хранятся в памяти компьютера так, что самый правый индекс измеряется быстрее всего.

Возможна инициализации массива непосредственно в программном коде. В этом случае в фигурных скобках приводятся значения элементов массива (рис. 9.1) в следующем виде:

int А[2][3]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

или

int А[2][3]= {{1, 2, 3, 4} {5, 6, 7, 8} {9, 10, 11, 12}};

Количество инициализаторов не обязано совпадать с количеством элементов массива. Если инициализаторов меньше, то оставшиеся элементы не определены.

Двухмерный массив, например, int А[3][4] можно представить в виде следующей матрицы:

 

Второй индекс (j)

 

Первый A00 A01 A02 A03

индекс (i) A10 A11 A12 A13

A20 A21 A22 A23

 

Первый индекс – это номер строки в массиве, второй индекс – номер столбца.

В памяти компьютера элементы такой матрицы разместятся в таком порядке:

A00, A01, A02, A03, A10, A11, A12, A13, A20, A21, A22, A23.

Кроме этого, инициализация массивов возможна в процессе выполнения программы – путем записи данных в отведенные для массивов ячейки памяти.

При работе с массивами, в т. ч. двухмерными, целесообразно использовать оператор цикла for, т.к. известен размер обрабатываемого массива (число элементов массива), т. е. число повторений цикла.

В языке C++ не проверяется выход индекса за пределы массива. Если массив m[100] целочисленный массив:

int m[100];,

а в программе указано

x=m[200];,

то сообщение об ошибке не будет, а переменной x будет присвоено произвольное значение.

При обработке массивов в Visual С++ 2010 все действия в программе выполняются над элементами массива (!), а не над массивом в целом. При этом индекс элемента может быть задан либо его значением, либо выражением:

А[4], F[i+k+1];.

Над массивами можно выполнять следующие действия:

1. Вводить массивы в память компьютера.

2. Выводить массивы на экран дисплея, на другое устройство или в файл.

3. Присваивать определенные значения элементам массивов.

4. Копировать массивы.

5. Переставлять элементы массивов.

6. Сортировать элементы массивов.

2. Консольный ввод и вывод двухмерных массивов в среде Visual С++ 2010

Т. к. все действия необходимо выполнять над элементами двухмерныхмассивов, то для ввода двухмерного массива в память компьютера необходимо организовать его поэлементный ввод посредством оператора цикла for(т. к.известен размер массива).

Для консольного вывода двухмерного массива также надо с помощью оператора цикла for организовать поэлементный вывод исследуемого массива.

Пример 1. Исследовать способы консольного ввода и вывода двухмерных массивов. Необходимо ввести с клавиатуры матрицу А размерностью M×N в память компьютера и вывести эту информацию на дисплей.

Решение. Для придания программе большей универсальности зададим размерность исходной матрицы с запасом, а реальная размерность будет вводиться в каждом конкретном случае. Число строк обозначим m, а столбцов - n.

Поэлементный ввод матрицы А организован при помощи двух операторов цикла for– внешнего и внутреннего (вложенного). Внешний цикл организует перебор элементов матрицы А по строкам, а вложенный – по столбцам.

Вывод исходной матрицы на экран будет производиться аналогичным образом.

Блок-схема алгоритма решения данной задачиприведена на рис. 9.2.

j=0,n,1
Начало
Завершение
Ввод i, j, n, m
i=0,m,1
Вложенный цикл
Ввод Aij
j=0,n,1
i=0,m,1
Вложенный цикл
Вывод Aij

Рис. 9.2. Блок-схема алгоритма поэлементного ввода и вывода матрицы с использованием цикла for

#include "stdafx.h"

#include <conio.h>

#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

const int M=10,N=10;//Число строк и столбцов матрицы А с запасом

int i, j, m, n, A[M][N];//Объявление переменных и матрицы А

cout<<"Vvedite chislo strok i stolbcov matricu:"<<endl;

cin>>m>>n;//Ввод числа строк и столбцов исходной матрицы А

cout<<" Vvedite postrochno elementu matricu:"<<endl;

for(i=0; i<m; i++)//Внешний цикл ввода элементов матрицы А

for(j=0; j<n; j++)//Вложенный цикл ввода элементов матрицы А

cin>>A[i][j];//Ввод элемента матрицы А

cout<<endl;

cout<<"Matrica A"<<endl;

for(i=0; i<m; i++)//Внешний цикл вывода элементов матрицы А

{//Начало составного оператора для внешнего цикла for

for(j=0; j<n; j++)//Вложенный цикл для вывода элементов матрицы А

cout<<A[i][j]<<" ";//Вывод элемента матрицы А

cout<<endl;

}//Конец составного оператора для внешнего цикла for

getch();

return 0;

}

 

После выполнения программы получим:

Vvedite chislo strok i stolbcov matricu:

3 4

Vvedite postrochno elementu matricu:

1 2 3 4 5 6 7 8 9 10 11 12



<== предыдущая лекция | следующая лекция ==>
БИБЛИОГРАФИЧЕСКИЙ СПИСОК | Matrica A


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.036 сек.