Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Видеоматериал для лекций по С++ c потоковым вводо_выводом (cin, cout) 2008 г.doc
Скачиваний:
12
Добавлен:
29.03.2016
Размер:
346.62 Кб
Скачать

Массивы

Формат описания массива:

тип_элементов имя [размер1] [размер2] … [размерN]

Вариант 1

int array[12]; // объявление массива array[0] – array[11]

Вариант 2

int array[]={2,5,4,9,12};

array[0]=2, array[1]=5, array[2]=4, array[3]=9, array[4]=12

Для определения размера массива array нужно воспользоваться операцией sizeof:

size=sizeof(array)/sizeof(array[0]);

Вариант 3

int main ( )

{const int n=12;

float arr[n];

…..

return 0;

}

Индекс массива

array[3], a[k+2], mas[i]

Пример ввода с клавиатуры и вывода на экран одномерного массива

// ввод и вывод массива

# include <iostream>

using namespace std;

int main ()

{ int a[5];

for (int i=0; i<5; ++i)

{ cout<<”a[“<<i<<”]=”;

cin>>a[i]; }

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

cout<<”a[“<<i<<”]=”<<a[i]<<” “;

return 0;

}

Пример ввода вещественного массива и вычисления среднего арифметического значения.

// среднее значение массива

# include <iostream>

using namespace std;

int main ( )

{ const int n=10;

double a[n], average;

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

{ cout<<”a[“<<i<<”]=”;

cin>>a[i]; }

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

average+= a[i];

average/=n;

cout<<”/naverage=”<< average;

return 0;

}

Пример вычисления суммы положительных элементов, предшествующих первому отрицательному элементу.

# include <iostream>

using namespace std;

int main( )

{ const int n=10;

int a[n], sum=0;

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

{ cout<<"a["<<i<<"]=";

cin>>a[i]; }

i=0;

while (a[i]>0 && i<n)

{sum+=a[i];

i++;}

cout<<"sum="<<sum<<endl;

return 0;

}

Пример заполнения массива случайными числами.

// заполнение массива случайными числами

#include <iostream>

#include <stdlib.h>

#include <time.h>

using namespace std;

int main()

{int mas[10];

srand ((unsigned int) time (NULL));

for (int i=0; i<10; ++i)

{ mas[i]=rand()%100;

cout<<mas[i]<<" ";

}

}

Пример сортировки массива «методом пузырька».

Таблица 1. Пример сортировки методом пузырька

// сортировка массива по возрастанию

# include <iostream>

using namespace std;

int main()

{ int x[]={6,4,9,2,1,8,10,25,3};

int i, j, n, a;

n=sizeof(x)/sizeof(x[0]);

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

for (j=0; j<n-1-i; j++)

if (x[j]>x[j+1]) {a=x[j]; x[j]=x[j+1]; x[j+1]=a;}

for (i=0; i<n; i++) cout<<x[i]<<” “;

return 0;

}

Операция sizeof() определяет размер в байтах

Двумерные массивы

float d[3][2] – двумерный массив, содержащий 3 строки ( с номерами 0, 1, 2) и 2 столбца ( с номерами 0, 1);

//объявление массива и инициализация

float mas[3][3]={5.4, 23.22, 1.5, 6.1, -4.7, 8.3, 17.1 ,18.2 ,56.3};

float a[][3]={{5,9,4},{1,2,3}}; // объявление массива и инициализация

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

d[0][0], d[i][j+1]

Пример. Программа определяет среднее арифметическое элементов целочисленной матрицы размером 4х6 и количество положительных элементов в каждой строке.

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

#include <iostream>

#include <iomanip.h>

using namespace std;

int main()

{

const int nrow=4, ncol=6;

int a[nrow][ncol], i,j;

cout<<"Input element of the array"<<endl;

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

for (j=0; j<ncol; j++)

cin>>a[i][j];

// вывод элементов

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

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

cout<<setw(4)<<a[i][j];

cout<<endl;

}

float sum=0;

int n_pol_el;

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

{

n_pol_el=0;

for (j=0; j<ncol; j++)

{

sum=sum+a[i][j];

if (a[i][j]>0) n_pol_el++;

}

cout<<"String"<<i<<" Number: "<<n_pol_el<<endl;

}

sum/=nrow*ncol;

cout<<"Arithmetic mean: "<<sum<<endl;

return 0;

}

Задача. В целочисленной матрице определить номер строки, содержащей наибольшее количество элементов, равных нулю.

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

#include <iostream>

#include <iomanip.h>

using namespace std;

int main()

{ const int nrow=4, ncol=5;

int a[nrow][ncol], i, j;

cout<<"Input element of the array"<<endl;

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

for (j=0; j<ncol; ++j)

cin>>a[i][j];

int istr=-1, Maxkol=0, kol;

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

{ kol=0

for (j=0; j<ncol; ++j)

if (a[i][j]==0) ++kol;

if (kol>Maxkol) {istr=i; Maxkol=kol;}

}

// вывод элементов

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

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

cout<<setw(4)<<a[i][j];

cout<<endl;

}

if (istr==-1) cout<<”null rows is not”<<endl; else cout<<”istr=”<<istr<<endl;

return 0;

}