I doppi || sono gli or..
In realtà, più che andare fuori traccia, ho voluto implementare l'intero programma, per vedere se mi funzionava il tutto, dato che non devo esercitarmi solo nelle funzioni, ma in tutto.
Deve restituirmi un float come somma, perchè l'array 2D ha valori float, la somma di float da float, quindi "somma" è float.
La dimensione mi hanno detto che inizialmente si da una dimensione massima così, ma poi il compilatore effettivamente, quando faccio la scanf di r e c - riga e colonna, mi crea la matrice con quello che chiedo..
Sono andata fuori traccia in quanto l'esercizio mi chiedeva di fare una function con solo la somma al suo interno, ecco perchè chiedevo a voi come si passavano le dimensioni (date dall'utente) di una matrice, in una function..
Comunque sicuramente non lo presenterò così al professore..
Comunque ho cambiato alcune cose, c'ho fatto due function in modo da non confondermi il tutto! L'unica cosa è che non mi fa la somma...
Se volete controllare, mi farebbe tanto piacere.
#include <stdio.h>
#include <stdlib.h>
float matrice();
float sottomatrice(int r, int c, float m[10][10]);
int main()
{
float somma=0;
somma=matrice();
printf("%0.3f", (matrice));
}
float matrice()
{
int i, j, r=0, c=0;
float m[10][10], somma2=0.0;
printf("Dammi val riga e colonna\n");
do{
scanf("%d", &r);
scanf("%d", &c);
}while((r<=0)||(c<=0)||(r>5)||(c>5));
printf("Dammi i val decimali di matrice\n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
scanf("%f", &m[i][j]);
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%0.3f\t", m[i][j]);
}
printf("\n");
}
somma2=sottomatrice(r,c,m);
return somma2;
}
float sottomatrice(int r, int c, float m[10][10])
{
int p=0, q=0, i, j;
float somma1=0.0;
printf("Dammi p e q\n");
do{
scanf("%d", &p);
scanf("%d", &q);
}while((p>r) || (p=0) || (q>c) || (q=0));
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
{
somma1=somma1+m[p][q];
}
printf("%0.3f", somma1);
}
return somma1;
}