PDA

View Full Version : [c]Array 2D: errore nella chiamata alla function somma


mariano89
26-02-2010, 19:32
#include <stdio.h>
#include <stdlib.h>
#define RIG 2
#define COL 3
int riempi_array2D (int a[][100], int, int);


int main(int argc, char *argv[])
{
int array2D [RIG][COL]= {1, 2, 3, 1, 2, 3 };
int somma;
somma = riempi_array2D (array2D[], RIG, COL);
printf ("somma %d", somma);

system("PAUSE");
return 0;
}

int riempi_array2D (int a[][100], int righe, int colonne){
int i, j, somma = 0;

for (i=0; i<righe; i++)
{
for (j=0; j<colonne; j++){
somma = somma + aray[i][j]
}
}

return somma;

}

non ho capito molto bn come si chiama e come si dichiara, chi ha pazienza di spiegarmi qst piccolo dettaglio?:stordita:

bobbytre
26-02-2010, 19:46
nella funzione riempi_array2D il nome del parametro prima è a

mentre successivamente lo chiami aray


oltre che cosi "a occhio" mi sembra che i parametri li passi in modo errato ...

mariano89
26-02-2010, 20:06
hai ragione su quell'errore.
Mentre che il passaggio dei paramenti non ho capito bene come avviene...:confused:
Ho provato in quest'altro modo ma mi fa la somma degli indirizzi in memoria e non dei valori:



#include <stdio.h>
#include <stdlib.h>
#define RIG 2
#define COL 3
int riempi_array2D (int a[][100], int, int);


int main(int argc, char *argv[])
{
int array2D [RIG][COL]= {1, 2, 3, 1, 2, 3 };
int som;


som = riempi_array2D (array2D [3], RIG, COL);
printf ("somma %d", som);

system("PAUSE");
return 0;
}

int riempi_array2D (int a[][100], int righe, int colonne){
int i, j, somma = 0;

for (i=0; i<righe; i++)
{
for (j=0; j<colonne; j++){
printf ("%d + %d", somma, a[i][j]);
somma = somma + a[i][j];
}
}

return somma;

}

cionci
26-02-2010, 20:27
Non ci vogliono le quadre nella chiamata alla funzione.

mariano89
26-02-2010, 20:49
è vero, e così grazie. Però facendo una stampa di tutte le operazioni che fa ho notato che il ciclo for non funziona, ovvero la j itera ma non la i.

int riempi_array2D (int a[][50], int righe, int colonne){
int i, j;
int somma = 0;
for (i=0; i<righe; i++)
{
for (j=0; j<colonne; j++){
printf (" %d + %d \n", somma, a[i][j]);
somma = somma + a[i][j];
}
}

return somma;

}

ho sbagliato a scrivere qualcosa?:mbe:

ohi
27-02-2010, 11:06
int riempi_array2D (int a[][100], int, int);

perche dimensione 100?


#include <stdio.h>
#include <stdlib.h>
#define RIG 2
#define COL 3
int riempi_array2D (int a[RIG][COL], int, int);


int main(int argc, char *argv[])
{
int array2D [RIG][COL]= {1, 2, 3, 1, 2, 3 };
int som;


som = riempi_array2D (array2D, RIG, COL);
printf ("somma %d", som);

system("PAUSE");
return 0;
}

int riempi_array2D (int a[RIG][COL], int righe, int colonne){
int i, j, somma = 0;

for (i=0; i<righe; i++)
{
for (j=0; j<colonne; j++)
{
printf ("%d + %d", somma, a[i][j]);
somma = somma + a[i][j];
}
}

return somma;

}