|
|||||||
|
|
|
![]() |
|
|
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 18: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: 12:22.




















