|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Aiuto Risoluzione errori compilazione
ho scritto del codice in C però mi da molti errori che non riesco a risolvere, ho bisogno di una mano perchè non conosco molto bene il C.Ho messo gli errori in allegato come immagine.
il Codice: Codice:
#include <stdlib.h> #include <stdio.h> #include <time.h> #define N0 [10] /* limite inferiore al numero di vertici dei digrafi da generare */ #define N [10] /* limite superiore al numero di vertici dei digrafi da generare */ #define H0 [0] /* limite inferiore al numero dei digrafi da generare */ #define H [10] /* limite superiore al numero dei digrafi da generare */ /* variabili globali */ typedef int matrice [10][10] ; /* matrice adiacenza dei grafi */ matrice m; double p=0.0; double supp=0.0; double infp=0.0; int main(void) { int i=0, k=0; int flag=0; int n=N0; for (n=10;n<N;n++) {for(h=0;h<H;h=h+2) {p=0.5; supp=1.0; infp=0.0; flag = 1; while(flag) { genera_matrice(m, n, p);; int succ=genTPerm(0); if(succ==0){infp=p; p=0.5*(supp+p);} else{supp=p;p=0.5*(p+infp);} if(fabs(infp-supp)<.05){flag=0;} /* fine ciclo while(flag) */ } media[n]+=supp; media2[n]+=supp*supp; /* fine ciclo for(h... */ } devstandard[n]=sqrt(1/(H-1)*(media2[n]-media[n]*media[n])); media[n]=media[n]/(H-1); /* fine ciclo for(n... */ } } } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Codice:
#include <stdlib.h> #include <stdio.h> #include <time.h> #define N0 [10] /* limite inferiore al numero di vertici dei digrafi da generare */ #define N [10] /* limite superiore al numero di vertici dei digrafi da generare */ #define H0 [0] /* limite inferiore al numero dei digrafi da generare */ #define H [10] /* limite superiore al numero dei digrafi da generare */ /* variabili globali */ typedef int matrice [10][10] ; /* matrice adiacenza dei grafi */ matrice m; double p=supp=infp=0.0; int main(void) { int i=0, k=0,k=0,flag=0; for (int n=10;n<N;n++) {for(int h=0;h<H;h=h+2) {p=0.5; supp=1.0; infp=0.0; flag = 1; while(flag) { genera_matrice(m, n, p);; int succ=genTPerm(0); if(succ==0){infp=p; p=0.5*(supp+p);} else{supp=p;p=0.5*(p+infp);} if(fabs(infp-supp)<.05){flag=0;} /* fine ciclo while(flag) */ } media[n]+=supp; media2[n]+=supp*supp; /* fine ciclo for(h... */ } devstandard[n]=sqrt(1/(H-1)*(media2[n]-media[n]*media[n])); media[n]=media[n]/(H-1); /* fine ciclo for(n... */ } } } Tanto per dire.... le cose in grassetto dove le definisci?
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Se hai letto sul tuo log degli errori, avrai notato che hai sbagliato tutti i #define
non si deve dichiarare un #define così: #define pippo [10] quando in realtà voglio che pippo sia un valore (in questo caso 10) ma viene dichiarato molto più correttamenta così: const int pippo=10; vedrai che alla compilazione del progetto il compilatore ti dichiarerà gli errori in maniera più lampante. ![]() Poi ci sono anche delle variabili non dichiarate.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Aiuto Risoluzione errori compilazione
Come e dove dichiaro in questo caso media[n] e media2[n] ?
ho ricompilato il codice e mi da gli errori che vi ho allegato. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Consiglio la lettura di un libro prima di ritoccare il codice.
Prima gattoni, poi cammini ![]() Inviato dal mio Nexus 7 usando Tapatalk 4
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go Ultima modifica di The_ouroboros : 27-08-2013 alle 17:06. |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Aiuto Risoluzione errori compilazione Rispondi alla discussione
Ok,però ho bisogno di una mano perchè devo risolvere il tutto il prima possibile come le dichiaro ho provato con double media[0]=0; come variabile globale ma mi da lo stesso errore.
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Aiuto Risoluzione errori compilazione
Ho risolto con il codice però ora devo aggiungere il codice che contiene le funzioni genTperm() e genera_matrice() come unisco il tutto in un unico main??
Codice Principale: Codice:
#include <stdlib.h> #include <stdio.h> #include <time.h> const int N0=10; /* limite inferiore al numero di vertici dei digrafi da generare */ const int N=10; /* limite superiore al numero di vertici dei digrafi da generare */ const int H0=0; /* limite inferiore al numero dei digrafi da generare */ const int H=10; /* limite superiore al numero dei digrafi da generare */ /* variabili globali */ typedef int matrice [10][10] ; /* matrice adiacenza dei grafi */ matrice m; double p=0.0; double supp=0.0; double infp=0.0; int main(void) { int i=0, k=0,flag=0; int n,h; int media[n]; int media2[n]; int devstandard[n]; for ( n=10;n<N;n++){ for( h=0;h<H;h=h+2){ p=0.5; supp=1.0; infp=0.0; flag = 1; while(flag) { genera_matrice(m, n, p); int succ=genTPerm(0); if(succ==0){infp=p; p=0.5*(supp+p);} else{supp=p;p=0.5*(p+infp);} if(fabs(infp-supp)<.05){flag=0;} /* fine ciclo while(flag) */ } media[n]+=supp; media2[n]+=supp*supp; /* fine ciclo for(h... */ } devstandard[n]=sqrt(1/(H-1)*(media2[n]-media[n]*media[n])); media[n]=media[n]/(H-1); /* fine ciclo for(n... */ } } Codice da Unire: Codice:
#include <assert.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 10 #define N0 [10] /* limite inferiore al numero di vertici dei digrafi da generare */ #define N2 [10] /* limite superiore al numero di vertici dei digrafi da generare */ #define H0 [0] /* limite inferiore al numero dei digrafi da generare */ #define H [10] /* limite superiore al numero dei digrafi da generare */ typedef int matrice[N][N]; /* VARIABILI GLOBALI: n nChr = numero di permutazioni alcolate (inizialmente 0) Chr = permutazione Chr1 = permutazione inversa (Chr1[i] = n equivale ad elemento di permutazione non definito (se Chr[i]=j, allora Chr1[i]=j) Succ = risposta della procedura genTPerm (inizialmente 1) */ int Chr[100]; /* vettore soluzione (permutazione) */ int Chr1[100]; /* soluzione inversa */ int nChr=0; /* numero soluzioni costruite dalla procedura esaustiva */ int Succ=1; /* flag che indica il successo della procedura esaustiva */ int n=3; /* numero vertici digrafi */ double supp=0.0; double infp=0.0; /* procedura di inizializzazione dei vettori soluzione (Chr[] e Chr1[]) */ void genera_matrice(matrice m, size_t n, double p) { size_t i = 0, j = 0; assert(n <= N); srand((unsigned) time(NULL)); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { m[i][j] = rand() < p * RAND_MAX ? 1 : 0; } } } void stampa_matrice(matrice m, size_t n) { size_t i = 0, j = 0; assert(n <= N); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", m[i][j]); } printf("\n"); } } void initChr() { int i=0; for(i=0;i<n;i++) { Chr[i]=n; Chr1[i]=n; } } /* procedura di stampa di Chr[] */ void stampaVett() { int i=0; for(i=0;i<n;i++) printf ("%d ",Chr[i]); printf("\n"); } /* procedura esaustiva di calcolo soluzioni */ void genTPerm(int k) { int i=0; if(k>(n-1)) { stampaVett(); /* verifica se la soluzione trovata è un ciclo: se si succ=1 e termina genTPerm */ nChr++; if(nChr>n) { Succ=0; return ; } } else for(i=0;i<n;i++) {if(Chr1[i]==n) {Chr[k]=i; Chr1[i]=k; genTPerm(k+1); Chr1[i]=n; Chr[k]=n; } } } /* programma principale */ int main(void) {double p = 0.5; size_t n = 5; int flag=0; int matrice[N][N] = { 0 }; int i=0, k=0; /* inizializza variabili, vettori e strutture dati */ nChr = 0; initChr(); /* procedura che inizializza Chr e Chr1 */ genTPerm(0); } |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Studia bene l'istruzione pre-processore "#include" e come settare l'ambiente di sviluppo per includere altri sorgenti nel compilato .
Sono d'accordo con chi ti ha indicato di leggere un buon manuale sul C. Però io non saprei cosa indicarti lascio a chi è più informato di me sulle ultime novità su questo argomento, questo compito .
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Aiuto Risoluzione errori compilazione
Ho unito i 2 main in un unico programma viene eseguito il tutto però non mi produce risultati.
Codice:
#include <stdlib.h> #include <stdio.h> #include <time.h> const int N0=10; /* limite inferiore al numero di vertici dei digrafi da generare */ const int N=10; /* limite superiore al numero di vertici dei digrafi da generare */ const int H0=0; /* limite inferiore al numero dei digrafi da generare */ const int H=10; /* limite superiore al numero dei digrafi da generare */ /* variabili globali */ typedef int matrice [10][10] ; /* matrice adiacenza dei grafi */ matrice m; int Chr[100]; /* vettore soluzione (permutazione) */ int Chr1[100]; /* soluzione inversa */ int nChr=0; /* numero soluzioni costruite dalla procedura esaustiva */ int Succ=1; /* flag che indica il successo della procedura esaustiva */ int n=3; /* numero vertici digrafi */ double p=0.0; double supp=0.0; double infp=0.0; void genera_matrice(matrice m, size_t n, double p) { size_t i = 0, j = 0; srand((unsigned) time(NULL)); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { m[i][j] = rand() < p * RAND_MAX ? 1 : 0; } } } void stampa_matrice(matrice m, size_t n) { size_t i = 0, j = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", m[i][j]); } printf("\n"); } } void initChr() { int i=0; for(i=0;i<n;i++) { Chr[i]=n; Chr1[i]=n; } } /* procedura di stampa di Chr[] */ void stampaVett() { int i=0; for(i=0;i<n;i++) printf ("%d ",Chr[i]); printf("\n"); } /* procedura esaustiva di calcolo soluzioni */ /* ho modificato da void a int per errori*/ int genTPerm(int k) { int i=0; if(k>(n-1)) { stampaVett(); /* verifica se la soluzione trovata è un ciclo: se si succ=1 e termina genTPerm */ nChr++; if(nChr>n) { Succ=0; return ; } } else for(i=0;i<n;i++) {if(Chr1[i]==n) {Chr[k]=i; Chr1[i]=k; genTPerm(k+1); Chr1[i]=n; Chr[k]=n; } } } int main(void) { int i=0, k=0,flag=0; double p = 0.5; nChr = 0; int n,h; int media[n]; int media2[n]; int devstandard[n]; initChr(); genTPerm(0); for ( n=10;n<N;n++){ for( h=0;h<H;h=h+2){ p=0.5; supp=1.0; infp=0.0; flag = 1; while(flag) { genera_matrice(m, n, p); int succ=genTPerm(0); if(succ==0){infp=p; p=0.5*(supp+p);} else{supp=p;p=0.5*(p+infp);} if(fabs(infp-supp)<.05){flag=0;} /* fine ciclo while(flag) */ } media[n]+=supp; media2[n]+=supp*supp; /* fine ciclo for(h... */ } devstandard[n]=sqrt(1/(H-1)*(media2[n]-media[n]*media[n])); media[n]=media[n]/(H-1); /* fine ciclo for(n... */ } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:33.