русс | укр

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

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

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

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


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

Обработка двумерного массива


Дата добавления: 2013-12-23; просмотров: 1390; Нарушение авторских прав


Двумерный массив - структурированный тип данных, где каждый элемент представляет собой массив из элементов простого типа.

Формат объявления многомерного массива:

 

Тип идентификатор [размер1] [размер2] … [размер №];

Где размер1…№ - это целое положительное число или выражение, определяющее максимальное значение индекса массива. Количество элементов двумерного (многомерного) массива определяется произведением максимальных значений индексов. Например:

int mas [3][4]; объявляет массив из трех элементов, каждый из которых является массивом из четырех элементов целого типа. Размер массива равен 12 элементов, каждый из которых по 4 байта.

Количество элементов вычисляется по формуле:

 

число_элементов = sizeof (идентификатор) / sizeof (идентификатор[0]);

Пример: int a1[5][5];

int к = sizeof(a1) / sizeof(a1[0]);

 

Для определения количества байтов, которое занимает массив в оперативной памяти, принимается формула:

число_байтов = sizeof(тип_элемента_массива) * число_элементов ;

Обращение к элементу многомерного массива производится точно так же, как и к элементу одномерного массива, с помощью индексации.В двумерном массиве первый индекс определяет номер строки, а второй индекс – номер столбца. Все индексы первого элемента равны нулю, т.е. а1[0][0] – ‘элемент находится на пересечении нулевой строки и нулевого столбца и называется нулевым элементом матрицы.

Пример: int a1[4][4];

 

a1[0][0] a1[0][1] a1[0][2] a1[0][3]

 

a1[1][0] a1[1][1] a1[1][2] a1[1][3]

 

a1[2][0] a1[2][1] a1[2][2] a1[2][3]

 

a1[3][0] a1[3][1] a1[3][2] a1[3][3]

 

ü Элементы, у которых номер строки равен номеру столбца - расположены на главной диагонали. Обращение к нему – а1[i][i].

ü Элемент, у которого номер строки больше чем номер столбца, находится под главной диагональю.



Пример заполнения матрицы ниже главной диагонали:

for ( int i = 1; i < fkstrok ; i++) //цикл по строкам

for ( int j = 0; j < i+1 ; j++) //цикл по столбцам

scanf(“%d”,&a1[i][j]);

 

ü Элемент, у которого номер строки меньше чем номер столбца, находится над главной диагональю.

Пример заполнения матрицы выше главной диагонали:

for ( int i = 0; i < fkstrok-1 ; i++) //цикл по строкам

for ( int j = i+1; j < fkstolb ; j++) //цикл по столбцам

scanf(“%d”,&a1[i][j]);

 

Матрица – это двумерный массив, поэтому для последовательной обработки каждого элемента по строкам, необходимо организовать два цикла (вложенные), внешний цикл формирует номер строки, а внутренний номер столбца. Т.к. на каждый шаг внешнего цикла, внутренний отрабатывает нужное число раз, мы переберем все элементы в нулевой строке, затем в первой строке и так до тех пор, пока строки не закончатся. Если необходимо перебрать элементы матрицы по столбцам, то внешний цикл формирует номер столбца, а внутренний – номер строки.

Пример обработка матрицы по строкам:

for ( int i = 0; i < fkstrok ; i++) //цикл по строкам

for ( int j = 0; j < fkstolb ; j++) //цикл по столбцам

scanf(“%d”,&a1[i][j]);

Пример обработка матрицы по столбцам:

for ( int j = 0; j < fkstolb ; j++) //цикл по столбцам

for ( int i = 0; i < fkstrok ; i++) //цикл по строкам

cin>>a1[i][j]);

Пример 3:

for ( int i = 0; i < fkstrok ; i++) //цикл по строкам

{

for ( int j = 0; j < fkstolb ; j++) //цикл по столбцам

{

a1[i][j] = rand(); //присваиваем случайное число

cout<<a1[i][j]<<’\t’;

}

cout<<endl; //переходим на новую строку

}

Для генерации последовательности псевдослучайных чисел используются функции rand(), srand(), time().

ü Функция time() возвращает текущее календарное время, установленное операционной системой. Если системное время не установлено, функция возвращает число -1.

ü Функция srand() используется для вычисления стартовой точки при генерации при генерации последовательности псевдослучайных чисел, возвращаемых функцией rand().

ü Функция rand() возвращает целое число из диапазона от нуля до 0х7fff (величина RAND_MAX).

ü Применение данных функций требует включения заголовочного файла <cstdlib> , где определены rand() и srand() , а также файла <ctime> ,в котором определена функция time(). Заголовочные файлы включаются в программу с помощью директивы препроцессора #include .

Пример:

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespase std

void main ()

{

const int s = 5;

int ar [s][s]; //массив из 5 строк и 5 столбцов

srand((unsigned) time(NULL)); //вычисление стартовой точки при генерации случайных чисел, возвращаемые функцией rand().

for ( int i=0; I < s; i++) // цикл по строкам

{

For ( int j=0; j < s; j++) //цикл по столбцам

{

ar[i][j] = rand()%7+2; //присвоение случайного числа от 2 до 8

cout << ar[i][j]<<’\t’; //распечатка строки матрицы по столбцам

}

cout << endl; //переход на распечатку новой строки

}

}

 



<== предыдущая лекция | следующая лекция ==>
Составные типы данных | Порядок выполнения операций над указателями


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


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

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

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


 


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

 
 

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

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