|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 551
|
[C] restituire una variabile indice di una funzione alla funzione main
ciao a tutti ho un problema domani mattina devo consegnare questo elaborato che ho finito ma ho un ultimo problema:
la seguente funzione crea un array compatto (senza elementi nulli) da un array che contiene elementi nulli e non. float compatta(float b[], float c[],int z, int n){ int i,k=0; for(i=0; i<n; i++){ if(b[i]!=0){ c[k]=b[i]; k++; } } return k; } ora nel main quando voglio stampare il nuovo array come voglio usare il seguente ciclo for: for (i=0; i<??????????; i++){ printf("y[%d] = %.2f\n", i, y[i]); } ma non so che dare come indice, a me servirebbe quel k ma non so come prendermelo!!! ![]() spero mi riusciate ad aiutare grazie mille!!!
__________________
Se non hai ancora deciso per il tuo futuro Don'T panic!!! segui le tue passioni, ti porteranno lontano. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
premesso che, dato che restituisci k che è un intero, la firma della funzione dovrebbe essere,
"int compatta(float b[], float c[],int z, int n)" per recuperare k basta che fai: int totale = compatta (p1, p2, p3, p4); dove p1, p2, p3 e p4 sono i 4 parametri da passare alla funzione. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 551
|
ho risolto
dichiarando k come variabile globale, grazie a tutti cmq
__________________
Se non hai ancora deciso per il tuo futuro Don'T panic!!! segui le tue passioni, ti porteranno lontano. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
fermati!
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 551
|
__________________
Se non hai ancora deciso per il tuo futuro Don'T panic!!! segui le tue passioni, ti porteranno lontano. |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
|
Perché è programmazione veramente sporca... cerca di limitare il più possibile le globali ed usale solo per variabili davvero globali, non per mantenere un valore anche fuori da una funzione.
Per ottenere un valore da una funzione il linguaggio prevede un valore di ritorno (o al limite di passare un puntatore per parametro, da modificare all'interno), che è quanto ti suggeriva di usare Kralizek. Abusare delle globali è un vizio che porta facilmente a produrre codice gestibile con difficoltà e comunque difficile da manutenere. Se hai una variabile da condividere tra più moduli/funzioni e non c'è altra maniera (o sarebbe troppo oneroso) di tenerla condivisa, usa una globale, altrimenti sarebbe meglio evitare. Ciaociao ![]()
__________________
Venite a visitarci qui:http://www.bottomap.com Bottomap is a proud Masterdrive.it moderator |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 551
|
e allora mi proponete qualcosa?come codice
__________________
Se non hai ancora deciso per il tuo futuro Don'T panic!!! segui le tue passioni, ti porteranno lontano. |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
Visto che il k è il ritorno della tua funzione, che problema hai ad assegnarlo a una variabile?
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 551
|
non funge...ho provato
__________________
Se non hai ancora deciso per il tuo futuro Don'T panic!!! segui le tue passioni, ti porteranno lontano. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:55.