concordo con blood, è piu logico e corretto che il programma termini del tutto...
Programmatori di C a me
Collapse
X
-
Originariamente Scritto da BLOOD black Visualizza Messaggioascolta laplace,chiudi due volte il file
cmq io farei cosi':
Codice:#include<stdlib.h> if(A==NULL){ printf("IL file non esiste\n"); system("PAUSE"); exit(0); }
Figurati che fclose lo uso io che lo ho letto sul deitel altri del mio corso non sanno manco cosa sia.
P.s. Blood cosa studi ??Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioblood io uso le isctruzioni che conosco system pause ed altre non le conosco .
Figurati che fclose lo uso io che lo ho letto sul deitel altri del mio corso non sanno manco cosa sia.
P.s. Blood cosa studi ??
studio ing inf
Commenta
-
-
blood o chiunque altro possa togliermi questo dubbio.
Codice: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; }
La chiamata della funzione swap : swap(&D[i],&D[imin])
mentre la dichiarazione
Codice:void scambia (struct studente *A,struct studente *B) { struct studente temp ; temp=*A; *A=*B; *B=temp; }
Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioblood o chiunque altro possa togliermi questo dubbio.
Codice: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; }
La chiamata della funzione swap : swap(&D[i],&D[imin])
mentre la dichiarazione
Codice:void scambia (struct studente *A,struct studente *B) { struct studente temp ; temp=*A; *A=*B; *B=temp; }
perchè la funzione swap deve agire sui vettori originali, quindi modificare la posizione degli elementi degli stessi ...per questo ha bisogno di sapere dove prenderli dalla memoria tramite l'operatore indirizzo & ..
Commenta
-
-
Originariamente Scritto da BLOOD black Visualizza Messaggioperchè la funzione swap deve agire sui vettori originali, quindi modificare la posizione degli elementi degli stessi ...per questo ha bisogno di sapere dove prenderli dalla memoria tramite l'operatore indirizzo & ..
scusa ma i vettori non vengono passati in automatico per indirizzo ???Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioscusa ma i vettori non vengono passati in automatico per indirizzo ???
Commenta
-
-
Originariamente Scritto da BLOOD black Visualizza Messaggio&D[i] è l'indirizzo dell'elemento i esimo del vettore D, mentre D è l'indirizzo del suo primo elemento... la funzione swap agisce sugli elementi i-esimi
Quindi se avessi passato solo D cosa sarebbe accaduto ????Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggioecco.
Quindi se avessi passato solo D cosa sarebbe accaduto ????
Commenta
-
-
cio' perchè chi scorre gli indici è la funzione ordina non la swap...
mettiamola cosi': ORDINA decide quali elementi puntare e SWAP decide quale dei due viene prima...ma agisce in modo "statico" (non curandosi degli indici) su due elementi statici che visti dalla sua visuale potrebbero anche non appartenere ad un array...
Commenta
-
-
Originariamente Scritto da BLOOD black Visualizza Messaggioche la swap avrebbe cambiato la posizione dei primi elementi e basta
Quindi quando io passo un vettore ad una funzione questa del vettore conoscere l'indirizzo del primo elemento e la lunghezza dello stesso ??Pillola rossa o pillola blu ????
La risposta è dentro te.
Commenta
-
-
Originariamente Scritto da Sam Fisher Visualizza Messaggiocapisco.
Quindi quando io passo un vettore ad una funzione questa del vettore conoscere l'indirizzo del primo elemento e la lunghezza dello stesso ??
cio' che tu non capisci è che la swap non ha bisogno del limite perchè chi decide quando terminare l'iterazione non è lei ma chi si trova ad un livello superiore (la funzione ordina,infatti è lei che ha i for)... se dovessi fare qualche errore con gli indici , la swap se ne frega e continua a swappare gli elementi di overflow che le verranno passati (questo accadrà finchè non avrai un errore in tempo di esecuzione) momento in cui ti apparirà la finestrella che ti consiglia di inviare l'errore a microsoft ...
Commenta
-
-
Originariamente Scritto da BLOOD black Visualizza Messaggiose passi un vettore ad una funzione devi passare anche il limite... perchè la funzione non ha modo di capire la dimensione del vettore...
cio' che tu non capisci è che la swap non ha bisogno del limite perchè chi decide quando terminare l'iterazione non è lei ma chi si trova ad un livello superiore (la funzione ordina,infatti è lei che ha i for)... se dovessi fare qualche errore con gli indici , la swap se ne frega e continua a swappare gli elementi di overflow che le verranno passati (questo accadrà finchè non avrai un errore in tempo di esecuzione) momento in cui ti apparirà la finestrella che ti consiglia di inviare l'errore a microsoft ...
Commenta
-
-
void scambia (struct studente *A,struct studente *B)
swap è questa vero?
nella dichiarazione dei parametri formali c'è scritto che prende due puntatori...ovvero due indirizzi...quando la chiami è evidente che devi passare scambia(&a, &b). e tutto questo a prescindere dal significato che c'è dietro...
Commenta
-
Commenta