Programmatori di C a me
Collapse
X
-
Originariamente Scritto da XVII Visualizza Messaggiotu se un uomo saggio
rep- Climber
- ex Istruttore
- ex P.Trainer AFFWA
Commenta
-
-
Originariamente Scritto da X3me Visualizza Messaggiosi infatti l'idea di fare ingegneria (anche civile) non mi sfiora neanche
Commenta
-
-
Originariamente Scritto da X3me Visualizza Messaggioe ma un po mi rode perchè alla fine mi piace disegnare e progettare...vaaaa beh!!what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza Messaggiosi ma disegnare e progettare è un conto, ing è un altro fidati- Climber
- ex Istruttore
- ex P.Trainer AFFWA
Commenta
-
-
Originariamente Scritto da X3me Visualizza Messaggioe ma il problema è che non c'è una facolta dove disegni e progetti.Magari architettura ma non mi piace e non ha tutto sto gran successo (almeno).what?
Commenta
-
-
Ragazzi ho rifatto questo esercizio utilizzando più funzioni però adesso la stampa a video va bene ma di stampare su file non ne vuole sapere .
Secondo voi cosa può essere ???
Codice:#include<stdio.h> #include<conio.h> struct studente {char cognome[20];char sesso [2];int voto ;}; int acquisisci (FILE*,struct studente*); void ordina(int,struct studente*); void ricerca(int,struct studente*,int*,int*,struct studente*,struct studente*); void stampam(int,struct studente*); void stampaf(int, struct studente*); main() { FILE *fpi; int n,m,f; struct studente classe [20],maschi[20],femmine[20]; n=acquisisci(fpi,classe); ordina(n,classe); ricerca(n,classe,&m,&f,maschi,femmine); /*quando passi per indirizzo sempre &alla variabile*/ stampam(m,maschi); stampaf(f,femmine); fclose(fpi); getch(); } int acquisisci (FILE *A,struct studente *B) { int i=0 ; A=fopen("studenti.txt","r"); if(A==NULL) printf("IL file non esiste"); else { printf("elenco degli studenti acquisiti da file"); while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF) { printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto); i++; } fclose(A); return i; } } void ordina (int C,struct studente *D) { int i,imin,j; struct studente temp; for(i=0;i<(C-1);i++) { imin=i; for(j=i+1;j<C;j++) { if (D[j].voto<D[imin].voto) imin=j; } temp=D[i]; D[i]=D[imin]; D[imin]=temp; } } void ricerca (int E, struct studente *F,int *G,int *H,struct studente *mas,struct studente *fem) { int d; int j=0; int k=0; for(d=0;d<E;d++) { if(F[d].sesso[0]=='M') { mas[j]=F[d]; j++; } else { fem[k]=F[d]; k++; } } printf("\n\ni maschi presenti nel file sono %d le femmine sono %d\n\n\n",j,k); *G=j; *H=k; } void stampam(int K,struct studente *Q) { FILE *fpm; int d; fpm=fopen("maschio.txt","w"); if(fpm==NULL) printf("non riesco a scrivere il file"); else { printf("maschi nel file \n"); for(d=0;d<K;d++) printf("\n%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto); fprintf(fpm,"%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto); } fclose(fpm); } void stampaf(int Z,struct studente *W) { FILE *fpf; int d; fpf=fopen("femmina.txt","w"); if(fpf==NULL) printf("non riesco a scrivere il file"); else { printf("femmine nel file \n"); for(d=Z-1;d>=0;d--) printf("\n%s %s %d\n",W[d].cognome,W[d].sesso,W[d].voto); fprintf(fpf,"%s %s %d \n",W[d].cognome,W[d].sesso,W[d].voto); } fclose(fpf); }
Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
main()
{
FILE *fpi;
int n,m,f;
struct studente classe [20],maschi[20],femmine[20];
n=acquisisci(fpi,classe);
ordina(n,classe);
ricerca(n,classe,&m,&f,maschi,femmine); /*quando passi per indirizzo sempre &alla variabile*/
stampam(m,maschi);
stampaf(f,femmine);
fclose(fpi);
getch();
}
innanzitutto dentro a main() cosa c'entra fclose(fpi) ?
Commenta
-
-
hai mancato le parentesi per entrambi i cicli for
Codice:else { printf("maschi nel file \n"); for(d=0;d<K;d++)[B]{[/B] printf("\n%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto); fprintf(fpm,"%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto);[B]}[/B] } fclose(fpm); }
Codice:else { printf("femmine nel file \n"); for(d=Z-1;d>=0;d--)[B]{[/B] printf("\n%s %s %d\n",W[d].cognome,W[d].sesso,W[d].voto); fprintf(fpf,"%s %s %d \n",W[d].cognome,W[d].sesso,W[d].voto);[B]}[/B] } fclose(fpf); }
quando usi un ciclo for senza racchiudere fra parentesi graffe il codice da ciclare avrai l'effetto che solo la prima istruzione sotto il ciclo verrà ciclata...
Commenta
-
-
Originariamente Scritto da BLOOD black Visualizza Messaggiohai mancato le parentesi per entrambi i cicli for
Codice:else { printf("maschi nel file \n"); for(d=0;d<K;d++)[B]{[/B] printf("\n%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto); fprintf(fpm,"%s %s %d \n",Q[d].cognome,Q[d].sesso,Q[d].voto);[B]}[/B] } fclose(fpm); }
Codice:else { printf("femmine nel file \n"); for(d=Z-1;d>=0;d--)[B]{[/B] printf("\n%s %s %d\n",W[d].cognome,W[d].sesso,W[d].voto); fprintf(fpf,"%s %s %d \n",W[d].cognome,W[d].sesso,W[d].voto);[B]}[/B] } fclose(fpf); }
Cacchio blood riesci sempre ad anticiparmi !!!!
Stavo appena editando il listato perchè mi ero accorto dell'errore
P.s adesso tutto ok , fa tutto quello che deve fare.
Solo che alla fine del programma mi da errore .Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da laplace Visualizza Messaggiotogli fclose(fpi) dentro a main...di sicuro non ci vuole
Bingo !!!!!!!!!!!!Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza MessaggioBingo !!!!!!!!!!!!
cmq io farei cosi':
Codice:#include<stdlib.h> if(A==NULL){ printf("IL file non esiste\n"); system("PAUSE"); exit(0); }
Commenta
-
-
Originariamente Scritto da XVII Visualizza MessaggioIn che senso?- Climber
- ex Istruttore
- ex P.Trainer AFFWA
Commenta
-
Commenta