PDA

View Full Version : [C++] aiuto sottoprogrammi


PaCo87
20-03-2008, 16:17
salve a tutti , volevo un aiuto su un programma che ho fatto che ovviamente non funziona come dovrebbe. Il programma in questione deve calcolare l'area e il perimetro di una circonferenza , ma l'esercizio deve essere svolto PURTROPPO con i sottoprogrammi. Io ho fatto tutto ma quando mi stampa a video "l'area risulta .... " e " perimetro risulta ...." mi escono valori molto strani, magari sbaglio a richiamare il sottoprogramma? mi manca qualcosa della teoria che dovrei sapere ? Dov'è che sbaglio ??( perchè a me sembra tutto corretto). Se c'è qualche persona che mi può far capire come devo fare per far stampare a video il risultato giusto gliene sarei molto grato. Allego il file in txt , poi magari se volete potete poi riconvertirlo in .cpp per vedere il risalto dei colori :)

Attendo vostre notizie e ringrazio chi mi risponde :) ciaooo

Torav
20-03-2008, 16:58
beh direi che non assegni i valori che ti ritornano!
dovresti avere

area = calcolaSuperficie(raggio)
perimetro = calcolaPerimetro(raggio)

altrimenti ovviamente ti becchi i valori strani che di solito hanno le variabili non inizializzate!

sottovento
20-03-2008, 17:00
Due cose:
1 - Hai invertito il calcolo della superficie con quello del perimetro;
2 - Hai definito delle FUNZIONI, le quali ritornano il valore calcolato, che pero' non vai ad utilizzare: infatti ad area e perimetro non assegni alcun valore, pero' le stampi. Il contenuto e' ovviamente indefinito.

jappilas
20-03-2008, 17:17
salve a tutti , volevo un aiuto su un programma che ho fatto che ovviamente non funziona come dovrebbe. Il programma in questione deve calcolare l'area e il perimetro di una circonferenza , ma l'esercizio deve essere svolto PURTROPPO con i sottoprogrammi. Io ho fatto tutto ma quando mi stampa a video "l'area risulta .... " e " perimetro risulta ...." mi escono valori molto strani, magari sbaglio a richiamare il sottoprogramma? mi manca qualcosa della teoria che dovrei sapere ? Dov'è che sbaglio ??( perchè a me sembra tutto corretto). Se c'è qualche persona che mi può far capire come devo fare per far stampare a video il risultato giusto gliene sarei molto grato. Allego il file in txt , poi magari se volete potete poi riconvertirlo in .cpp per vedere il risalto dei colori :)

Attendo vostre notizie e ringrazio chi mi risponde :) ciaooole funzioni calcolaSuperficie() e calcolaPerimetro() (in realtà trattandosi di un cerchio sarebbe la circonferenza, ma a parte ciò) calcolano e restituiscono dei numeri float, ma non alterano le variabili area e perimetro, il cui valore resta quello (indefinito, in mancanza di inizializzazione esplicita) che avevano al momento dell' istanziazione, da qui i valori "strani" che vedi
prova ad assegnare i valori calcolati alle rispettive variabili

area = calcolaSuperficie(raggio);
perimetro = calcolaPerimetro(raggio);

EDIT mi scuso per l' intervento tardivo :O

PaCo87
20-03-2008, 17:28
ora provo e vi dico

PaCo87
20-03-2008, 18:08
ragazzi voglio ringraziarvi tutti :) sono riuscito solo ed esclusivamente grazie a voi non ci sarei mai arrivato perchè il prof a lezione mica c'aveva fatto un esempio? -.-' già è troppo capire come funzionava la chiamata e in genere il sottoprogramma mi mancava questo piccolo pezzettino che è risultata la parte piu' importante per la risoluzione dell'esercizio :) Ora ho un dubbio ma perchè mi approssima i valori?? esempio con raggio 4 , l'area = 25,12 e il perimetro = 50,24 mentre il programma mi da come risultati area = 24 e perimetro = 48 ??? eppure ho messo la variabile float ( numeri reali con precisione singola) devo mettere percaso double??? O.o Poi un' ultima cosa nel caso volessi calcolare per più circonferenze l'area e il perimetro sempre con il metodo dei sottoprogrammi , devo creare un ciclo for o while nel sottoprogramma principale??? grazie anche per questa risposta :)

sottovento
20-03-2008, 18:33
perimetro = (raggio * raggio ) * 3,14 ;


Non devi scrivere 3,14. Devi invece scrivere 3.14.
Quello che succede nel tuo caso e' che, usando la virgola, veniva eseguito:


perimetro = (raggio * raggio ) * 3;


e 14 veniva considerata un'istruzione separata.
Infatti, nota che 14 e' un'istruzione valida per il C/C++

PaCo87
20-03-2008, 18:38
perimetro = (raggio * raggio ) * 3,14 ;


Non devi scrivere 3,14. Devi invece scrivere 3.14.
Quello che succede nel tuo caso e' che, usando la virgola, veniva eseguito:


perimetro = (raggio * raggio ) * 3;


e 14 veniva considerata un'istruzione separata.
Infatti, nota che 14 e' un'istruzione valida per il C/C++

uau quante cose sto imparando oggi XD , grazie mille , mah questo esame lo vedo nero :o , cmq grazie per gli aiuti dati ,m'avete fatto imparare tante cose. un saluto e buona Pasqua a tutti :)

Luca69
20-03-2008, 18:52
..che bello il C ... qunati ricordi.... vedrai che tra poco arrivano i crash :D

PaCo87
20-03-2008, 19:05
..che bello il C ... qunati ricordi.... vedrai che tra poco arrivano i crash :D

si sarà pure bello il C++, però per la mia futura professione non servirà a molto,cmq il mio esame d'informatica comprende , condizioni IF , ciclo for e while e sottoprogrammi , questo è il programma che dobbiamo svolgere durante il corso. :)

71104
21-03-2008, 11:12
si sarà pure bello il C++, però per la mia futura professione non servirà a molto,cmq il mio esame d'informatica comprende , condizioni IF , ciclo for e while e sottoprogrammi , questo è il programma che dobbiamo svolgere durante il corso. :) niente classi? sicuro che sia un esame di C++ e non di C? :p

PaCo87
21-03-2008, 11:16
niente classi? sicuro che sia un esame di C++ e non di C? :p

hihi sicurissimo XD è un esame da 4 crediti