View Full Version : C: problema funzioni con matrici...
P A N I Z Z
15-03-2007, 11:30
Ho un problema che non riesco a risolvere con le funzioni che utilizzano vettori multidimensionali, questo è un esempio di codice:
void bombe(int prova[MAX][MAX]){
int bombe,n,m,i,x,y;
srand(time(0));
printf("Inserisci il numero di bombe: ");
scanf("%d",&bombe);
for(i=0;i<bombe;i++){
n = rand();
m = n % MAX;
x=m;
n = rand();
m = n % MAX;
y=m;
if(prova[x][y]==1)
bombe++;
prova[x][y]=1;
}
}
E nella prima riga mi da questo errore:
variable-size type declared outside of any function
Chi mi sa dare una mano...? :help:
P A N I Z Z
15-03-2007, 12:55
Qualche saggio mi sa aiutare che sono quì fermo? :D
Il pezzo di codice che hai postato mi sembra corretto dal punto di vista della sintassi. Posso solo ipotizzare che il problema sia altrove. La macro MAX l'hai definita, giusto?
P A N I Z Z
15-03-2007, 14:01
Si, definita... infatti anche a me sembra corretto, non so cosa fare... :mc:
yorkeiser
15-03-2007, 14:51
Strano, col cl Microzozz compila senza problemi, così come con lcc.
L'unica che mi viene in mente è che hai sia una variabile che una funzione chiamate bombe, può darsi che il compilatore che stai usando si incasini lì (anche se non dovrebbe). Prova a rinominarne una magari.
P A N I Z Z
15-03-2007, 14:59
Niente, e si è aggiunto anche un'altro problema:
for(i=0;i<MAX;i++){
printf("Inserire il numero: ");
scanf("%d", nomi.numero[i]);
};
mi da questo errore: request for member `numero' in `nomi', which is of non-class type `anagrafica[5]'
Boh, può essere un problema del DEV C++??
RaouL_BennetH
15-03-2007, 15:08
Niente, e si è aggiunto anche un'altro problema:
for(i=0;i<MAX;i++){
printf("Inserire il numero: ");
scanf("%d", nomi.numero[i]);
};
mi da questo errore: request for member `numero' in `nomi', which is of non-class type `anagrafica[5]'
Boh, può essere un problema del DEV C++??
Da ignorante del C chiedo:
ma non dovrebbe essere: scanf("%d", &nomi.numero[i]); ?!?
beppegrillo
15-03-2007, 15:10
Niente, e si è aggiunto anche un'altro problema:
for(i=0;i<MAX;i++){
printf("Inserire il numero: ");
scanf("%d", nomi.numero[i]);
};
mi da questo errore: request for member `numero' in `nomi', which is of non-class type `anagrafica[5]'
Boh, può essere un problema del DEV C++??
non è così che si richiede aiuto, nessuno ha lla palla di cristallo.
Se ci segnali un problema , dovresti come minimo mostrare anche le strutture dati che hai usato. In questo caso presumo una struct nomi.
Così come prima, se il compilatore ti fornisce anche una riga, è meglio darla, in maniera da localizzare l'errore (non è sempre la riga giusta, ma da un idea).
P A N I Z Z
15-03-2007, 15:21
Il secondo "problema" lo sto risolvendo perchè penso di aver proprio sbagliato la sintassi, mentre nel primo resta il dubbio.
Mi sembra di aver dato tutti i dati che mi hai chiesto, che manca?
Scusatemi ma sto esame mi sta facendo impazzire! :D
RaouL_BennetH
15-03-2007, 15:38
Il secondo "problema" lo sto risolvendo perchè penso di aver proprio sbagliato la sintassi.....
OMG!!! questo vorrebbe dire forse che per la prima volta ho azzeccato un suggerimento!!! :D davvero, dimmi di si e renderai questo mio giorno memorabile !! :)
P A N I Z Z
15-03-2007, 15:41
Diciamo che quella era una dimenticanza, ma il problema era un altro.... cmq si, ci hai preso! :D
beppegrillo
15-03-2007, 16:45
Secondo me non dichiari la costante max, incolla tutto il programma.
P A N I Z Z
15-03-2007, 16:59
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 7;
void inserimento(int prova[MAX][MAX],int max){
int i,j;
for(i=0;i<max;i++)
for(j=0;j<max;j++)
prova[i][j]=0;
};
void bombe(int prova[MAX][MAX]){
int bombe1,n,m,i,x,y;
srand(time(0));
printf("Inserisci il numero di bombe: ");
scanf("%d",&bombe);
for(i=0;i<bombe1;i++){
n = rand();
m = n % MAX;
x=m;
n = rand();
m = n % MAX;
y=m;
if(prova[x][y]==1)
bombe1++;
prova[x][y]=1;
}
}
void stampa(int prova[MAX][MAX], int max){
int i,j;
for(i=0;i<max;i++){
for(j=0;j<max;j++)
printf("%d ",prova[i][j]);
printf("\n");
}
}
int main()
{
int max[MAX][MAX];
inserimento(max,MAX);
bombe(max);
stampa(max,MAX);
system("pause");
return 0;
}
a me compila...
però devi togliere il ; dal #define
#define MAX 7
ciao
a run-time mi dà errore di "bus error"
prova col debug
repne scasb
15-03-2007, 18:46
??
scanf("%d",&bombe);
Ma non sara':
scanf("%d",&bombe1);
P A N I Z Z
15-03-2007, 18:57
Risolto, grazie mille a tutti! :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.