Newsgroup: it.comp.lang.c
Titolo: Passare parametri a funzioni

Eccomi di nuovo con una di quelle domande da principianti...
Qualcuno mi spiegherebbe come diavolo faccio a passare i parametri alle
funzioni che creo? Mi spiego meglio sto tentando di fare un programma che
dato in input il numero di colonne (m) e il numero di righe (n) mi permetta
di riempirlo poi con dei dati. Ho fatto questo:
#include <stdio.h>
/* Prototipi delle funzioni */
void inizializza_array(int [] ,int , int );
int main(){
/* Dichiaro due variabili per la dimensione dell'array */
int m,n;
/* Chiedo la dimensione dell'array */
printf("Quante colonne deve avere il tuo array? \n");
scanf("%d",&m);
printf("\nQuante righe deve avere il tuo array? \n");
scanf("%d",&n);
/* Dichiaro gli array */
int a[m,n];
int b[m-2,n-2];
/* Chiamo la funzione che mi inizializza l'array */
inizializza_array(a[], m, n );
printf ("\nPremi ENTER per continuare.\n");
getchar (); /* Aspetta l'input */
return 0;
}
void inizializza_array(int array[], m, n) {
/* Dichiaro due variabili indice dell'array */
int x,y
/* Eseguo cicli di for innestati per immettere i dati */
for (x=0;x<m;x++)
  for (y=0;y<n;y++){
    printf("Immettere il valore per la posizione %d , %d", x, y);
    scanf("%d",&array[x][y]);
  }
solo che quando vado a compilare mi dice:
main.c: In function `main':
main.c:23: parse error before ']' token
main.c: At top level:
main.c:30: parse error before "m"
main.c: In function `inizializza_array':
main.c:30: number of arguments doesn't match prototype
main.c:4: prototype declaration
main.c:36: parse error before "for"
main.c:36: `m' undeclared (first use in this function)
main.c:36: (Each undeclared identifier is reported only once
main.c:36: for each function it appears in.)
main.c:36: parse error before ')' token
main.c:37: `n' undeclared (first use in this function)
main.c:37: parse error before ')' token
main.c:39: `array' undeclared (first use in this function)
make.exe: *** [main.o] Error 1
Esecuzione terminata
Non č che qualcuno mi farebbe una bella spiegazione cosě non rompo piů?
Grazie mille.
-- 
www.aradio.it
a_RADIO_content_provider

 int a[m,n];       <----------------------------------  questo in c non si
puo' fare se m e n vengono
conosciuti solo in fase di run-time
in questo caso puoi seguire 2 strade o prepari una matrice "abbondante" e
poi la riempi parzialmente oppure usi
malloc()
per allocare lo spazio necessario
per es:
/*=============================*/
#include<stdio.h>
#include<alloc.h>
float **m;
int i,j,r,c;
main()
{
     printf ("Inserisci il numero di righe ");
     scanf("%d",&r);
     printf ("Inserisci il numero di colonne ");
     scanf("%d",&c);
     m=(float **)malloc(r*sizeof(float *));
for (i=0; i<r; i++)
         m[i]=(float *)malloc(c*sizeof(float));
for (i=0; i<r; i++)
for (j=0; j<c; j++) {
         printf ("Inserisi un valore reale ");
         scanf("%f",m[i]+j);
                             }
free(m);
}
Ciao,
             Renzo


Va cambiato di conseguenza, in base al prototipo gia' espresso all'inizio.

Puo' darsi che mi sia sfuggito qualche errore.
Non ho tempo di fare prove.
Ciao,
Ema

inizializza_array(a[], m, n );
Devi scrivere:
inizializza_array(a, m, n );
-- 
Andrea Laforgia - a.laforgia(at)
libero.it
"There are three kinds of people in this world; 
 those who are good at maths and those who aren't".

for (i=0; i<m; i++) *(a+i) = (int *) malloc(n * sizeof(int));
I cast sui valori di ritorno di malloc() non ci vogliono, in C.


 inizializza_array(a, m, n );
Fatto, mi dice:
main.c: In function `inizializza_array':
main.c:30: number of arguments doesn't match prototype
main.c:4: prototype declaration
main.c:36: parse error before "for"
main.c:36: `m' undeclared (first use in this function)
main.c:36: (Each undeclared identifier is reported only once
main.c:36: for each function it appears in.)
main.c:36: parse error before ')' token
main.c:37: `n' undeclared (first use in this function)
main.c:37: parse error before ')' token
main.c:39: `array' undeclared (first use in this function)
make.exe: *** [main.o] Error 1
Esecuzione terminata
-- 
www.aradio.it
a_RADIO_content_provider

 ha scritto nel messaggio
news:0jdPa.17680$qa5.3...@news2.tin.it...

Dal tipo di errori mi sembra che tu non abbia fatto le correzioni che ti
hanno, se non č cosě riposta il codice.
Ciao

Fatto, mi dice:
Bada che ci sono altri errori nel tuo codice...
