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..


codice:
 
//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;  }
perchè è scritto if(segno) cout<<"-"; ??? non dovrebbe essere scritto (segno== true) o (segno==false) ??? thx