|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
C: problema funzioni con matrici...
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...? ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
Qualche saggio mi sa aiutare che sono quì fermo?
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
Si, definita... infatti anche a me sembra corretto, non so cosa fare...
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
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.
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
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++?? |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
ma non dovrebbe essere: scanf("%d", &nomi.numero[i]); ?!?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Quote:
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).
__________________
Ciao ~ZeRO sTrEsS~ |
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
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! ![]() |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
Diciamo che quella era una dimenticanza, ma il problema era un altro.... cmq si, ci hai preso!
![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Secondo me non dichiari la costante max, incolla tutto il programma.
__________________
Ciao ~ZeRO sTrEsS~ Ultima modifica di beppegrillo : 15-03-2007 alle 15:54. |
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
#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; } |
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
a me compila...
però devi togliere il ; dal #define #define MAX 7 ciao |
![]() |
![]() |
![]() |
#15 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
a run-time mi dà errore di "bus error"
prova col debug |
![]() |
![]() |
![]() |
#16 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
??
Codice:
scanf("%d",&bombe); Codice:
scanf("%d",&bombe1); |
![]() |
![]() |
![]() |
#17 |
Member
Iscritto dal: Oct 2006
Messaggi: 105
|
Risolto, grazie mille a tutti!
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:50.