Массивы
Массивы представляют собой последовательность данных одного типа, размещённых друг за другом в памяти компьютера. Каждая единица данных называется элементом массива.
Описание массива:
Доступ к элементам массива осуществляется по адресации, относительно первого элемента, то есть, если необходимо обратиться к 10 элементу, надо написать intArrey[9] или intArrey+9; (Первый элемент имеет номер 0 или смещение 0 от начала.)
Возможна инициализация массива
int Arrey[5]={10,20,30,40,50};
Существуют много мерные массивы, в этом случае указывается размерность по всем размерностям: int Arrey2[5][3]; Инициализация такого массива представляется в виде:
int Arrey[5][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{0,1,0}};
int Arrey[5][3]={1,2,3,4,5,6,7,8,9,10,11,12,0,1,0};
При этом описании Существует массив Arrey[5] , который содержит адреса начала каждой строки, Если мы хотим использовать указатель на этот массив необходимо обращение **Arrey;
Для объявления массивов можно использовать область динамической памяти, в этом случае описание массива будет иметь вид:
int *Arrey;
Arrey=(int*)malloc(n*sizeof(int));
Пример программы, работающей с массивами.
#include<iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int vvodArrey(int n,int m,int *Arrey,int zz);
int exitArrey(int n,int m,int *Arrey);
int* sunArrey(int n,int m,int *Arrey1,int*Arrey2);
int vvodArrey(int n,int m, int *Arrey,int zz)
{ int i,j;
randomize();
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
*(Arrey+i*m+j)=random(zz);
}
return 0;
}
int exitArrey(int n,int m, int *Arrey)
{ int i;
for(i=0;i<n*m;i++)
(((i+1)%m)==0)? cout<<*(Arrey+i)<<"\n" : cout<<*(Arrey+i)<<"\t";
return 0;
}
int* sunArrey(int n,int m,int *Arrey1,int*Arrey2)
{
int*Arrey;
int i,j;
Arrey=(int*)malloc(sizeof(int)*n*m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(Arrey+i*m+j)=*(Arrey1+i*m+j)+(*(Arrey2+i*m+j));
return Arrey;
}
int main(void)
{
int *ArreyF,*ArreyS,*ArreyRez,n,m,size=100;
cout <<"Введите размерность массива\n по строкам:";
cin >>n;
cout <<"по столбцам : ";
cin >>m;
if ((ArreyF=(int*)malloc(sizeof(int)*n*m))==0)
{ cout <<" нет памяти\n";return -1;}
if ((ArreyS=(int*)malloc(sizeof(int)*n*m))==0)
{ cout <<" нет памяти\n";return -1;}
vvodArrey(n,m,ArreyF,size);
vvodArrey(n,m,ArreyS,size/2.);
ArreyRez=sunArrey(n,m,ArreyF,ArreyS);
cout <<"******--1--********\n";
exitArrey(n,m,ArreyF);
cout <<"******--2--*********\n";
exitArrey(n,m,ArreyS);
cout <<"******--3--*********\n";
exitArrey(n,m,ArreyRez);
return 0;
}
Результат работы программы:
Введите размерность массива
по строкам: 2
по столбцам : 3
******--1--********
64 47 73
8 85 53
******--2--*********
32 23 36
4 42 26
******--3--*********
96 70 109
12 127 79
Введите размерность массива
по строкам: 1
по столбцам : 5
******--1--********
70 44 39 57 46
******--2--*********
35 22 19 28 23
******--3--*********
105 66 58 85 69