Ciao, sto cercando di capire un programma che ricevuto in ingresso un numero, calcola il segno, calcola il valore assoluto, lo divide in parte intera e parte frazionaria, poi riceve in input la base in cui vuole convertire sia la parte intera che la parte frazionaria..
perchè è scritto if(segno) cout<<"-"; ??? non dovrebbe essere scritto (segno== true) o (segno==false) ??? thxcodice://Intestazioni #include <iostream> using namespace std; #include <stdlib.h> int main () { /*dichiarazioni: x è variabile di input; pfaz_x, pint_x, b, Q, Qprec, segno, cont, P sono variabili di algoritmo; R,I sono variabili di output. */ float x,pfraz_x,F,Fprec,P; int pint_x, b, Q, R, Qprec, I, cont; bool segno; //input numero reale da convertire in base b cout<<"assegna un numero reale: \t"; cin>>x; /*memorizzazione del segno e calcolo del valore assoluto*/ if(x<0) segno=true; else segno=false; x=abs(x); //calcolo parte intera pint_x=(int)x; //calcolo parte frazionaria pfraz_x=x - pint_x; cout<<"la parte intera e\':"<<pint_x<<"\n"; cout<<"la parte frazionaria e\':"<<pfraz_x<<"\n"; cout<<"Scegli una base da 2 a 16 \n"; //scelta base cin>>b; /*calcolo e stampa della stringa rappresentativa in base b della parte intera del numero. ATTENZIONE: vedi commento successivo!*/ cout<<"La rappresentazione in base b della parte intera del numero e\': \n"; if(segno) cout<<"-"; Q=pint_x; while (Q>0) {Qprec=Q; Q=Q/b; R=Qprec - Q*b; cout<<R; } //end while cout<<"\t ERRORE"; /*N.B.: I resti R sono stampati nell'ordine in cui sono calcolati, mentre dovrebbero essere stampati in ordine inverso rispetto a quello in cui sono calcolati. Le cifre della parte intera quindi visualizzate in ordine inverso. Come si può ottenere la visualizzazione corretta?*/ /*Calcolo e stampa della stringa rappresentativa in base b della parte frazionaria del numero. ATTENZIONE: vedi commento successivo!*/ cout<<"La rappresentazione in base b della parte frazionaria del numero e\': \n"; cout<<"0. \n"; cont=0; F= pfraz_x; do { P=F*b; I=(int)P; F=P-I; //cout<<"\n test \t F="<<F<<"\n"; cout<<I; cont++; }while (F!=0 && cont<10); //end do..while /*N.B.: Le condizioni di permanenza del ciclo, benchè on scorrette, non sono del tutto adeguate. Occorrerebbe verificare che la F corrente non sia uguale ad una precedente, in modo da sospendere il ciclo appena individuato l'eventuale periodo. Come si può rendere operativo tale controllo?*/ cout<<"\n\n"; system("PAUSE"); return 0; }

Rispondi quotando
