Помогите с передачей массива в функцию. Не понимаю самой технологии...
// Лабораторная работа №4.
// Функции.
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std;
const int n=5;
void Init_and_out(int *Mas[][], int n1){
cout<<"Massiv:\n";
for (int i = 0; i<n1; i++){
for (int j=0; j<n1; j++){
Mas[i][j]=rand()%30-3;
cout<< Mas[i][j]<<"\t";
}
cout<<"\n";
}
}
void Sum1(int *Mas [][], int n1){
int Summ;
int sost; // sost=1, если элемент <0
for (int i=0;i<n1; i++){
Summ=0;
sost=0;
for (int j=0;j<n1;j++){
if((Mas[j][i]>=0) || (sost=0)){
Summ+=Mas[j][i];
}
else{
sost=1;
break;
}
}
if (sost==0) cout<<"Summ ["<<i<<"] = "<<Summ<<"\n";
else cout<<"Line #"<<i<<" not suitable.\n";
}
cout<<"\n";
}
void Massiv_summ_diagonal(int *Mas[][],int n1,int *MS[],int k){
for (int i=0;i<k;i++)
MS[i]=0;
for (int i=0;i<n1; i++){
for (int j=0;j<n1;j++){
MS[i+j]+=abs(Mas[i][j]);
}
}
}
void Minimum_amount(int *MS_1 [], int n){
cout<<" The amount of the diagonals:";
int MinSum=MS_1[0];
for (int i=0;i<n;i++){
cout<<MS_1[i]<<" ";
if (MinSum>MS_1[i])
MinSum=MS_1[i];
}
cout<<"\n The minimum amount = "<<MinSum<<"\n";
}
void main(){
int Massiv[n][n];
// Инициализация и вывод массива
Init_and_out(&Massiv,n);
// Определить сумму элементов в тех столбцах
// которые не имеют отрицательных элементов
Sum1(&Massiv, n);
// минимум среди сумм модулей элементов
// диагоналей, параллельных побочной
// диагонали матрицы.
const int n1=n*2-1;
int MS[n1];
Massiv_summ_diagonal(&Massiv, n,&MS, n1);
Minimum_amount(&MS, n1);
}
Ты создал двумерный массив указателей на int.
Указатель на двумерный массив выгляди так:
int** Mas;
И передаёшь в функцию просто Massiv, а не указатель на него.
Ну и ещё, просто чтобы не путаться, я бы на твоём месте начал с передачи динамических массивов.
Функции:
Вызов:
Остальное без изменений