Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Двумерный массив трактуется как одномерный массив, элементами которого является массив с указанным в описании типом элементов. Например, оператор
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!