Тема 5: Двумерные массивы. Функции.
План:
1. Двумерные массивы
2. Функции
Теоретическая часть
1. Двумерные массивы
Двумерный массив — это одномерный массив, элементами которого являются одномерные массивы.
Как и одномерные массивы двумерные массивы содержат элементы одного типа, но доступ к ним осуществляется по двум индексам. Двумерный массив int a[n,m] можно представить в виде таблицы, состоящей из n строк и m столбцов. К каждому элементу можно обратиться, указав в квадратных скобках номер строки и столбца, в которых он находится:
a[0,0] a[0,1] a[0,2]…a[0,m]
a[1,0] a[1,1] a[1,2]…a[1,m]
……………………………………
a[n,0] a[n,1] a[n,2]…a[n,m]
Алгоритм заполнения двумерного массива изображен на рисунке 1.
Рисунок 1 – Алгоритм заполнения двумерного массива
Реализация алгоритма заполнения в программе.
for (int i 0;i<n;i++)
for (int j=0;j<n;j++)
cin>>a[i][j];
Программа, которая заполняет массив и отображает его на экране в виде таблицы.
#include <iоstream>
#include <stdlіb.h>
using namespace std;
int main()
{
int const n=5;
int A[n][n];
for (int i 0;i<n;i++)
for (int j=0;j<n;j++)
A[i][j]=rand()%5;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
cout<<A[i][j]<<» «;
cout<<endl;
}
return 0;}
2. Функции
Функция — это именованная последовательность операций, которая находится вне главной функции main() и может быть использована в любой другой функции. Функции позволяют разделить программу на несколько маленьких подпрограмм, которые в совокупности выполняют поставленную задачу. Также функции можно многократно использовать, что значительно сокращает размер кода программы.
Определение функции:
тип_возвращаемого_значения имя_функции (тип имя_переменной1, тип имя_переменной2)
{тело функции;}
Сама функция может принимать значение определенного типа. Этот тип указывается перед именем функции. Значение, которая принимает функция пишется после слова return и называется возвращаемым значением. Если функция не имеет возвращаемого значения, а просто выполняет какую-либо последовательность операций, то перед именем функции указывается слово void.
Рассмотрим использование функций на примере программы, которая вычисляет площадь прямоугольника:
#include <iоstream>
using namespace std;
float a,b, S; //объявление переменных а – длина, b – ширина, S – площадь
float area( float a, float b) /* функция area, которая вычисляет площать квадрата со сторонами a и b и принимает значение типа float */
{
float s;
s=a*b;
return s;
}
int main()
{
cout<< «Длина»;
cin>>а;
cout<< «Ширина»;
cin>>b;
S=area(a,b);
cout<<S;
return 0;
}
Практическое задание
1. Задан двумерный массив А[n][n]. Найти сумму элементов его главной диагонали. Сформировать массив B[n][n], в котором все отрицательные элементы из А[n][n] меняются на противоположные, а положительные остаются без изменений. Использовать функции для вывода массива на экран, для нахождения суммы и для нахождения противоположного числа для отрицательных значений.
#include
#include
#include
using namespace std;
int const n=5;
void output(int arr[5][5])
{
cout<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
cout<<arr[i][j]<<» «;
cout<<endl;
}
}
int summa(int arr[5][5])
{
int s=0;
for (int i=0;i<n;i++)
for(int j=0;j<n;j++)
if (i==j)
s+=arr[i][j];
return s;
}
int inverse(int k)
{
if (k<0)
return -k;
if (k>0)
return k;
}
int main()
{
srand(time(NULL));
int a[n][n];
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
a[i][j]=rand()%10-3;
output(a);
cout<<«Сумма элементов главной диагонали: «<<summa(a);
int b[n][n];
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
b[i][j]=inverse(a[i][j]);
output(b);
return 0;
}
Домашнее задание
1. Дан массив D[n][m], где n=5, m=6, заполненный случайными значениями. Определить произведение элементов в строке S.