[c++]Programma che converte un intero in binario!

Stato
Discussione chiusa ad ulteriori risposte.

GenKs

Utente Silver
12 Agosto 2007
68
5
2
74
Ecco che vi posto il sorgente del mio primo programma scritto interamente da me. Volevo sapere cosa ve ne pare.

Codice:
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    int y, x;
    string k;
    cout << "Inserisci un numero intero da convertire in binario:" << endl;
    cin >> x;
    cout << "Ecco il numero convertito in binario:" << endl;
    while(x)
    {
               if(x%2 == 0)
               {
               k += "0";
               }
               else
               { 
                k += "1";
               };
               x = x/2;
    }
    reverse(k.begin(), k.end());
    cout << endl << k << endl;
    cout << "\n\t\t\t\t\t\t\t\tCopyright GenKs";
    getchar();
    getchar();
    return 0;
}


L'ho migliorato, ho messo la scelta se riconvertirne un altro o no!

Codice:
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>

using namespace std;

int main()
{
    int y, x;
    string k, n;
    do{
    cout << endl << "Inserisci un numero intero da convertire in binario:" << endl;
    cin >> x;
    cout << "Ecco il numero convertito in binario:" << endl;
    while(x)
    {
               if(x%2 == 0)
               {
               k += "0";
               }
               else
               { 
                k += "1";
               };
               x = x/2;
    }
    reverse(k.begin(), k.end());
    cout << endl << k << endl << endl;
    cout << "Vuoi convertire un altro intero?(si/no)" << endl;
    cin >> n;
    k = "";
    }while(n == "si");
    cout << "\n\t\t\t\t\t\t\t\tCopyright GenKs";
    fflush(stdin);
    getchar();
    return 0;
}
 
Prova a scrivere tu per allenamento una reverse, invece di usare quella già pronta in algorithm...in genere è un ottimo esercizio per capire i meccanismi di funzionamento delle stringhe in C e in C++.
E i due getchar() alla fine sono un po' bruttini da vedere...se uno serve ad ammortizzare il \n di troppo proveniente da stdin, usa un bel fpurge(stdin) che è più elegante...
 
Cioe devo inserire al posto di un getchar(); fpurge(stdin); ? Ma non è solo per linux questa funzione o mi sto sbagliando? Visto che per adesso sto lavorando sulla piattaforma winzoz! E poi a che serve? Cmq seguirò il tuo consiglio, cercherò di scrivermi una reverse da solo! Grazie Blacklight!
 
fpurge() è definita in stdio, quindi direi che c'è anche per Windows...
Serve a pulire il buffer di input da eventuali caratteri di troppo. Proprio il caso di quando richiedi stringhe in input e premi invio, in cui rimangono dei \n nel buffer...
 
BlackLight ha detto:
fpurge() è definita in stdio, quindi direi che c'è anche per Windows...
Serve a pulire il buffer di input da eventuali caratteri di troppo. Proprio il caso di quando richiedi stringhe in input e premi invio, in cui rimangono dei \n nel buffer...

interessante, ora ho capito perché i getchar di solito sono in coppia, perché quando premi invio in input va \n e contemporaneamente si chiude l'input quindi \n resta in memoria. ora ho capito.
 
BlackLight ha detto:
fpurge() è definita in stdio, quindi direi che c'è anche per Windows...
Serve a pulire il buffer di input da eventuali caratteri di troppo. Proprio il caso di quando richiedi stringhe in input e premi invio, in cui rimangono dei \n nel buffer...

Bene grazie della soddisfacente spiegazione, quindi devo includere l'header stdio! Quando avrò tempo cercherò di scrivermi una funzione reverse da solo cosi come hai detto tu imparo a gestire le stringhe! thz!
 
Blacklights anche includendo l'header stdio, mi esce questo errore ->"`fpurge' undeclared (first use this function) " e " (Each undeclared identifier is reported only once for each function it appears in.) "! Perchè me lo fa?

Ho risolto utilizzando la funzione fflush(stdin) sempre inclusa in stdio! ma non capisco perchè sto fpurge non funziona?!?
 
Stato
Discussione chiusa ad ulteriori risposte.