Buna,
M-am uitat putin peste programul realizat si principalele greseli pe care le-am observat sunt urmatoarele:
1. Antetul functiei nu este corect. Tu vrei sa transmiti o matrice ca parametru insa in antet ai declarat doi parametrii de timpul int.
int cifr(int a,int n)
corect este (int a[101][101], int n).
2. In cazul in care folosesti functia asa cum este folosita in program pe langa numarul de numere pozitive de pe fiecare linie iti va afisa in coada si un zero, de la instructiunea reutrn. Eu am modificat functia astfel:
void cifr(int a[101][101],int n)
{int i,j,rez;
for(i=1;i<=n;i++)
{rez=0;
for(j=1;j<=n;j++)
if(a[i][j]>0)
rez++;
cout<<rez<<" ";
}
}
Adica am facut functia void. Asa returneaza doar numarul de numere pozitive din matricea transmisa ca parametru. Apelul functiei in main se va face astfel:
cifr(a,n);
Postez mai jos programul modificat
#include<iostream>
using namespace std;
int a[101][101],n;
void cifr(int a[101][101],int n)
{int i,j,rez;
for(i=1;i<=n;i++)
{rez=0;
for(j=1;j<=n;j++)
if(a[i][j]>0)
rez++;
cout<<rez<<" ";
}
}
int main(int argc, char **argv)
{
int i,j;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
cifr(a,n);
cin>>n;
return 0;
}
Inca o precizare. In cazul in care doresti sa considere si 0 ca numar pozitiv va trebui modificata conditia din if din:
if(a[i][j]>0)
in:
if(a[i][j]>=0)
Toate cele bune.