Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Condizioni variabili booleane

    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

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Scrivendo un' espressione viene valutato se l' espressione è vera, cioè se produce un risultato diverso da zero.
    if(segno) è come scrivere if(segno==true).

  3. #3
    Originariamente inviato da Who am I
    Scrivendo un' espressione viene valutato se l' espressione è vera, cioè se produce un risultato diverso da zero.
    if(segno) è come scrivere if(segno==true).
    ecco quello che volevo sapere xD Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.