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

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



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;

}

Функции

Пример.

Требуется составить программу нахождения наибольшего значения из трех величин – max(a,b,c). Для ее решения можно использовать вспомогательный алгоритм нахождения максимального значения из двух, поскольку справедливо равенство: max=(a,b,c)=max(max(a,b),c).

# include <iostream> using name space std;   int MAX(int, int);   int main (void) { int a,b,c, z; cout<<"a,b,c"; cin>>a>>b>>c; z=MAX(MAX(a,b),c); cout<<"max="<<z; retirn 0; } int MAX (int x, int y) { int w; if (x>y) w=x; else w=y; return w; }   # include <iostream> using name space std;   int MAX (int x, int y) { int w; if (x>y) w=x; else w=y; return w; } int main (void) { int a, b, c, z; cout<<"a, b, c"; cin>>a>>b>>c; z=MAX(MAX(a,b),c); cout<<"max="<<z; return 0; }    

Формат определения функции:

тип имя_функции (спецификация_параметров)

{тело_функции}

Пример:

void hello_world (void)

{

cout<<”Hello_World!!!\n”;

}

Формат обращения к функции (вызов функции)

имя функции (список_фактических_параметров)

Пример:

# include <iostream>

using namespace std;

void hello_world (void)

{

cout<<”Hello_World!!!\n”;

}

int main ()

{

cout<<”Befor the function\n”;

hello_world(); // вызов функции

cout<<”After the function\n”;

return 0;

}

Результат выполнения программы:

Befor the function

Hello_World!!!

After the function

Оператором возврата из функции в точку ее вызова является оператор return. Он может использоваться в функциях в двух формах:

return; или return (выражение);

Пример

int aquare (int value)

{

return (value*value);

}

В вызывающей функции возвращаемое функцией aquare значение может быть присвоено переменной или использовано при вызове некоторой другой функции.

# include <iostream>

using namespace std;

int aquare (int value)

{

return (value*value);

}

int main ()

{int x, result;

cout<<”Input number”;

cin>>x;

result= aquare(x);// или cout<< aquare(x)<<” are a aquare of number“<<x<<endl;

return 0;}

Прототип функции.

Пример:

// возведение числа в указанную степень

# include <iostream>

# include <math.h>

using namespace std;

void vpower(double, double);

int main()

{

double dtnum, dunum;

cout<<”Input number:”;

cin>>dtnum;

cout<<” Input degree:”;

cin >>dunum;

vpower (dtnum, dunum);

return 0;

}

void vpower(double dt, double du)

{

double danswer; //a:nse

danswer=pow(dt, du);

cout<<dt<<” in degree “<<du<<” =”<<danswer<<endl;

}

Способы передачи значений фактических параметров

из основной программы в функцию

// вызов функции по значению

# include <iostream>

using namespace std;

void swap (float, float);

int main ()

{

float a,c;

cout<<"Input a, c:"<<"\n";

cin>>a>>c;

swap(a,c);

cout<<a<<" "<<c<<"\n";

return 0;

}

void swap (float b, float d)

{

float m;

m=b;

b=d;

d=m;

}

Результаты выполнения программы:

Input a, c:

3.5 -2.7

3.5 -2.7

// использование ссылок в качестве аргументов функций

# include <iostream>

void swap (float &, float &);

int main ()

{

float a,c;

cout<<"Input a, c:"<<"\n";

cin>>a>>c;

swap(a,c);

cout<<a<<" "<<c<<"\n";

return 0;

}

void swap (float &b, float &d)

{

float m;

m=b;

b=d;

d=m;

}

Результаты выполнения программы:

Input a, c:

3.5 -2.7

-2.7 3.5

Ссылки

Формат объявления ссылки

тип & имя

где тип – это тип величины, на которую указывает ссылка;

& - оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа, например:





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



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