Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Многомерные массивы



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

float R[5][10];

объявляет массив из пяти элементов, каждый из которых есть массив из десяти вещественных чисел. Отдельные величины этого массива обозначаются именами с двумя индексами: R [ 0 ] [ 0 ], R[0][1],..., R [ 4 ] [ 9 ]. Объединять индексы в одну пару скобок нельзя, т. е. запись к [ 2, 3 ] ошибочна. Пример описания трехмерного массива:

double Х[3] [7] [20];

Как и в Паскале, порядок расположения элементов многомер­ного массива в памяти такой, что прежде всего меняется после­дний индекс, затем предпоследний и т.д., и лишь один раз про­бегает свои значения первый индекс.

При описании многомерных массивов их также можно иници­ализировать. Делать это удобно так:

int М[3][3]={ 11,12,13,

21,22,23,

31,32,33 };

Рассмотрим примеры программ обработки матриц — числовых двумерных массивов.

Пример14: Вычисление и вывод на экран таблицы умножения в форме матрицы Пифагора.

// Матрица Пифагора

#include<stdio.h>

#include <conio.h>

void main ()

{ int i,j, А[10][10];

clrscr ();

for (i=1; i<=9; i++)

{ for (j=1; j<=9; j++)

{ А[i] [j]=i*j;

printf ("%5d",А[1] [j]);

}

printf ("\n");

}

}

По данной программе в двумерном массиве А не будут запол­нены нулевая строка и нулевой столбец. По-прежнему интерпре­тируем первый индекс двумерного массива как номер строки мат­рицы, а второй индекс — как номер столбца.

Пример15: Заполнение матрицы случайными числами в диапа­зоне от 0 до 99 и поиск в ней максимального значения.

#include <iostream.h>

# include <iomanip.h>

# include <conio.h>

# include <stdlib.h>

#define n 5

void main ()

{ int i, j, ImaxА, JmaxА, А[n] [n];

clrscr ();

randomize (); //Установка датчика случайных чисел

for(i=0; i<n; i++)

{ for (j=0; j<п; j++)

{ А[i] [j]=rand()%100;

cout<<setw (6) <<А [ i ] [ j ];

}

cout<<endl;

}

ImaxА=JmaxА=0;

for(i=0; i<n; i++)

{ for(j=0; j<n; j++)

if (А[1][ j ]>А[ImaxА][JmaxА])

{ ImaxА=i; JmaxА=j; }

}

cout<<"Максимальное_значение:["<<ImaxА<<"]["<<Jmax<<"]=" <<А[ImaxА] [Jmax];

}

В результате тестирования этой программы получен следую­щий результат:

         
           
           
           
           
               

Максимальное значение: А[2][1]=98

В данной программе имеются новые элементы, использование которых требует пояснения. В стандартной библиотеке с заголо­вочным файлом stdlib.h содержится функция, прототип кото­рой имеет вид: int rand (void).

Результатом этой функции является целое случайное число из диапазона от 0 до RAND_MAX. Значение константы RAND_MAX определено в заголовочном файле stdlib.h и обычно равно 32767 — максимально допустимому целому числу. Для получе­ния случайных чисел в диапазоне от 0 до N— 1 достаточно вы­числить остаток от целого деления rand() на N. Функция с прототипом void randomize(void) выполняет первоначаль­ную настройку датчика случайных чисел так, чтобы последова­тельность чисел не повторялась при повторном выполнении про­граммы.

Другим новым элементом в данной программе является ис­пользование манипуляторов для управления потоковым выводом с помощью стандартного объекта cout. Манипуляторы объявля­ются в заголовочном файле iomanip.h. Манипулятор setw(n) влияет на формат следующего элемента выходного потока. Он ука­зывает на то, что значение будет выводиться в n позиций на экра­не (в программе n = 6). Другой использованный манипулятор — endl — обозначает конец строки и переводит экранный курсор на начало новой строки. Его действие аналогично действию уп­равляющего символа \n.





Дата публикования: 2014-11-02; Прочитано: 301 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...