Читайте также:
|
|
Многомерные массивы
Многомерные массивы - это массивы с более чем одним индексом.
Чаще всего используются двумерные массивы.
При описании многомерного массива необходимо указать C++, что массив имеет более чем одно измерение.
Пример
int t[3][4];Описывается двумерный массив, из 3 строк и 4 столбцов.
Элементы массива:
t[0][0] t[0][1] t[0][2] t[0][3]t[1][0] t[1][1] t[1][2] t[1][3]t[2][0] t[2][1] t[2][2] t[2][3]При выполнении этой команды под массив резервируется место. Элементы массива располагаются в памяти один за другим.
Пусть это линейка памяти:
Ввод/вывод двумерных массивов осуществляется в двух вложенных циклах
Ввод с клавиатуры | Случайное задание из интервала [a,b] |
#include<iostream.h> #include<conio.h> int main() { int i,j; cout <<"kol-wo strok i stolbcow"<<endl; cin >>i>>j; cout <<endl; int const n=i,m=j; int A[n][m]; //Wwod for (i=0;i<n;++i) for (j=0;j<m;++j) { cout <<"A["<<i<<"]["<<j<<"]="; cin >>A[i][j]; } cout <<endl; //Wiwod for (i=0;i<n;++i) { for (j=0;j<m;++j)cout <<A[i][j]<<" "; cout <<endl; } getch(); return 0; } | #include<iostream.h> #include<conio.h> int main() { srand(time(NULL)); int i,j,a,b; cout <<"kol-wo strok i stolbcow"<<endl; cin >>i>>j; cout <<endl; int const n=i,m=j; int A[n][m]; cout <<"granici"<<endl; cin >>a>>b; cout <<endl; //Wwod for (i=0;i<n;++i) for (j=0;j<m;++j) A[i][j]=rand()%(b-a+1)+a; cout <<endl; //Wiwod for (i=0;i<n;++i) { for (j=0;j<m;++j)cout <<A[i][j]<<" "; cout <<endl; } getch(); return 0; } |
Для работы с массивами строк лучше использовать указатели:
char names [3] [20]= {{"Иванов"},{"Петров"},{"Сидоров "}};Схематично можно изобразить следующим образом:
Для вывода строки можно использовать указатели:
cout<< *names; //Печать Иванов cout<< *(names+1); //Печать Петров cout<< *(names+2); //Печать Сидоров #include<iostream.h>#include<conio.h>int main(){ int i,j; cout <<"kol-wo strok "<<endl; cin >>i; cout <<"max dlina stroki"<<endl; cin >>j; cout <<endl; int const n=i,m=j; char A[n][m]; //Wwod for (i=0;i<n;++i) { cout <<"Stroka "<<i<<"="<<endl; cin>>*(A+i); cout <<endl; } //Wiwod for (i=0;i<n;++i) { cout<<i<<"-"<<*(A+i); cout <<endl; } getch();return 0;}
Задача1:
Массив A[n][m] задается случайно из интервала [-10;10] Заменить все отрицательные элементы этого массива на их модули и сосчитать их количество. Новый массив распечатать в виде таблицы.
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
srand(time(NULL));
int i,j,a,b;
cout <<"kol-wo strok i stolbcow"<<endl;
cin >>i>>j;
cout <<endl;
int const n=i,m=j;
int A[n][m];
a=-10; b=10;
cout <<endl;
//Wwod
for (i=0;i<n;++i)
for (j=0;j<m;++j)
A[i][j]=rand()%(b-a+1)+a;
cout <<endl;
//Wiwod
for (i=0;i<n;++i)
{
for (j=0;j<m;++j)cout <<A[i][j]<<" ";
cout <<endl;
}
cout <<endl;
int k=0;
//reschenie
for (i=0;i<n;++i)
for (j=0;j<m;++j)
if (A[i][j]<0)
{A[i][j]=abs(A[i][j]);
k=++k;
}
//Wiwod
for (i=0;i<n;++i)
{
for (j=0;j<m;++j)cout <<A[i][j]<<" ";
cout <<endl;
}
cout <<"k="<<k<<endl;
getch();
return 0;
}
Задача2:
Массив A[n][m] вводится с клавиатуры. Найти максимальный элемент в каждой строке и полученные элементы распечатать в столбик. Найти минимальный элемент в каждом столбце и полученные элементы распечатать в строчку.
#include<iostream.h>
#include<conio.h>
int main()
{
int i,j;
cout <<"kol-wo strok i stolbcow"<<endl;
cin >>i>>j;
cout <<endl;
int const n=i,m=j;
int A[n][m];
//Wwod
for (i=0;i<n;++i)
for (j=0;j<m;++j)
{
cout <<"A["<<i<<"]["<<j<<"]=";
cin >>A[i][j];
}
cout <<endl;
//Wiwod
for (i=0;i<n;++i)
{
for (j=0;j<m;++j)cout <<A[i][j]<<" ";
cout <<endl;
}
//max w stroke
cout <<"max w stroke"<<endl;
int max;
for (i=0;i<n;++i)
{
max=A[i][0];
for (j=1;j<m;++j)
if (A[i][j]>max)max=A[i][j];
cout <<i<<"-"<<max<<endl;
}
//min w stolbce
cout <<"min w stolbce"<<endl;
int min;
for (j=0;j<m;++j)
{
min=A[0][j];
for (i=1;i<n;++i)
if (A[i][j]<min)min=A[i][j];
cout <<min<<" ";
}
getch();
return 0;
}
Дата добавления: 2015-07-24; просмотров: 119 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Тип шкалы определяется | | | Методы многомерных классификаций. |