#include<iostream>
#include <Windows.h>
using namespace std;
void vvod(int **a, int n, int m);
void vivod(int **a, int n, int m);
int summa(int **a,int n, int m);
int &put(int **a, int i, int j, int n, int m);
int get(int **a, int i, int j, int n, int m);
int error=-1;
int main()
{
setlocale(LC_ALL, "Russian");
SetConsoleCP(1251); SetConsoleOutputCP(1251);
int n,m;
int **a;
cout << "Введите количество строк и столбцов"<<endl;
cin >>n>>m;
a=new int *[n];
for (int i=0;i<n;i++)
a[i]=new int [m];
cout << "Введите матрицу"<<endl;
vvod(a,n,m);
cout << "Введённая матрица"<<endl;
vivod(a,n,m);
cout << "Сумма элементов "<<summa(a,n,m)<<endl;
for (int i=0;i<n;i++)
delete []a[i];
delete []a;
system("pause");
return 0;
}
void vvod(int **a, int n, int m)
{
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
put(a,i,j,n,m)=rand()%10;
}
void vivod(int **a, int n, int m)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
cout <<get(a,i,j,n,m)<<" ";
cout << endl;
}
}
int summa(int **a, int n, int m)
{
int s=0;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
s=s+a[i][j];
return s;
}
int &put(int **a, int i, int j, int n, int m)
{
if((i>=0) && (i<n) && (j>=0) && (j<m))
return a[i][j]; // Возвращаем ссылку на элемент.
else {
cout << "Ошибка нарушения границ!\n";
return error; // Возвращаем ссылку на error.
}
}
int get(int **a, int i, int j, int n, int m)
{
if((i>=0) && (i<n) && (j>=0) && (j<m))
return a[i][j]; // Возвращаем значение элемента.
else {
cout << "Ошибка нарушения границ!\n";
return error; // Возвращаем значение переменной error.
}
}
|