Главная » 2017 » Апрель » 17 » Динамическая матрица. Ввод и вывод с Put Get
11:00
Динамическая матрица. Ввод и вывод с Put Get

#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.
    }
}

 

Просмотров: 329 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar