Originariamente Scritto da Sam Fisher
Visualizza Messaggio
Programmatori di C a me
Collapse
X
-
what?
-
-
Originariamente Scritto da XVII Visualizza MessaggioAllora, se non hai fatto la malloc metti semplicemente gli array maschi e femmine grandi come il vettore sorgente D e ti togli ogni problema
[/quote]Per quanto riguarda il riconoscere i maschi, mi pare che tu abbia dichiarato D[i].sesso come stringa e non come carattere quindi devi usare la funzione di libreria strcmp, scrivendo così if(strcmp(D[i].sesso,M) == 0) blabla avendo cura di fare #include <string.h> [/quote]
D[i].sesso è stato dichiarato cm struct cambia qualcosa ?Inoltre nemmeno <string.h> abbiamo fatto.
Ho capito che avendo fatto malloc e string.h mi sarei semplificato di molto la vita.Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza MessaggioD[i].sesso è stato dichiarato cm struct cambia qualcosa ?Inoltre nemmeno <string.h> abbiamo fatto.
Ho capito che avendo fatto malloc e string.h mi sarei semplificato di molto la vita.
Edit: se proprio la prof non vuole che usiate string.h ti scrivo la strcmp adesso e la usi tu nel file (tanto è una funzione molto semplice)what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza MessaggioHo visto come hai dichiarato D.sesso ed è a tutti gli effetti una stringa, quindi devi fare la strcmp....fai quell'include e fregatene di quel che ti dice la prof, string.h ti semplifica la vita (la malloc no )
Edit: se proprio la prof non vuole che usiate string.h ti scrivo la strcmp adesso e la usi tu nel file (tanto è una funzione molto semplice)Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
ecco, scritto ora al volo, per quello che serve in questa funzione dovrebbe bastare
Codice:int strcmp(char* a, char* b) { while(*a != '\0') { if(*a == *b) { a++; b++; } else { return 1; } } return 0; }
what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza Messaggioecco, scritto ora al volo, per quello che serve in questa funzione dovrebbe bastare
Codice:int strcmp(char* a, char* b) { while(*a != '\0') { if(*a == *b) { a++; b++; } else { return 1; } } return 0; }
Infatti adesso il numero di maschi è riconosciuto bene :
int acquisisci(FILE *A,struct studente *B,int *C)
{
int i=0; *C=0 /* M=0 è la stessa cosa perchè &M=C */;
while(fscanf(A,"%s%s%d",B[i].cognome,B[i].sesso,&B[i].voto)!=EOF)
{
if(B[i].sesso[0]=='M')
*C=*C+1;
printf("cognome= %s sesso= %s voto= %d \n\n" ,B[i].cognome,B[i].sesso,B[i].voto);
i++;
}
printf("In numero di maschi presenti vale =%d",*C);
fclose(A);
return i;
}Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggiosi mi sa che è la stessa soluzione che mi ha detto il prof però il maledetto non ha detto che è si chiama strcmp .
Infatti adesso il numero di maschi è riconosciuto bene :what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza MessaggioIn questo modo infatti vai a prendere il primo valore e lo confronti a M, però questo modo funziona solo se hai a che fare con una stringa "monocarattere", appena hai 2 o più caratteri ti conviene usare l'altra funzione . Piccola curiosità, cosa studi?
Senti ma te fai ingegneria informatica o cosa ?Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioio ingegneria elettrica e questo è l'esame di fondamenti di informatica.
Senti ma te fai ingegneria informatica o cosa ?what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza MessaggioSi faccio ing infoPillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioadesso conoscendo il numero di maschi e di femmine all'interno della funzione inserisci posso creare il file dei maschi in ordine crescente e quello femmine in ordine decrescente ?what?
Commenta
-
-
Originariamente Scritto da XVII Visualizza Messaggioin che senso? Cioè, ora che conosci il numero dei maschi puoi creare l'array della dimensione esattamente necessaria, poi copi i dati dall'array sorgente agli array maschi e femmine e dopo agisci ordinando tali array prima di scriverli sul file .txtPillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
hai sbagliato una cosa fondamentale
questo è il codice errato:
Codice:for(i=0;i<C;i++) { if(!strcmp(D[i].sesso,"M")) { D[i]=maschio[j]; j++; } else { D[i]=femmina[k]; k++; } }
Codice:for(i=0;i<C;i++) { if(!strcmp(D[i].sesso,"m")) { [B] maschio[j]=D[i];[/B] j++; } else { [B] femmina[k]=D[i];[/B] k++; } }
Commenta
-
-
Originariamente Scritto da Dave Clark's attacks Visualizza Messaggiosti cazzi il 19 ho la prova intercorso di C e sn arrivato solamente ai cicli for
sappiamo a chi rivolgerci, vero dave?
Commenta
-
Commenta