Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - programma x convertire in decimale e/o binario e viceversa.
Forum - C/C++ - programma x convertire in decimale e/o binario e viceversa.

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
marc 966 (Normal User)
Rookie


Messaggi: 32
Iscritto: 04/09/2009

Segnala al moderatore
Postato alle 15:31
Venerdì, 02/10/2009
ciao ragazzi. mi servirebbe un programma che converta i numeri da decimali a binario e/o esadecimali e viceversa. praticamente all' inizio il programma deve avere una variabile che una volta inserita il programma sappia con quale base deve lavorare e come deve convertire. io sono arrivato a queto punto adesso non so più andare avanti. mi potete dare una mano?
# include <iostream.h>
#include <stdlib.h>
#include <cstdlib>
int main (){
    int a=2,b=16,c,i,vb[10],ve[10];
    char v[10],f;
    vb[0]=1;
    for (i=1;i<10;i++){
        vb=a;
        a=a*2;
        }
        ve[0]=1;
        for (i=0;i<10;i++){
            ve=b;
            b=b*16;
           }
          cout<<"questo programma converte i numeri da decimale a binario e/o esadecimale";
          _sleep (2000);
          cout<<endl;
          cout<<"inserisci b per convertire un numero in binario altrimenti e per convertirlo in esadecimale";
          cin>>f;
          cout<<endl;
          cout<<"adesso inserisci il numero di cifre che contiene il numero da convertire";
          cin>>c;
          cout<<"adesso inserisci i valori";
          cout<<endl;
          for (i=0;i<c;i++){
              cin>> v;
              }

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:48
Venerdì, 02/10/2009
Beh io ti so dire la teoria, in pratica il metodo che mi ha fatto imparare la mia insegante di informatica è questo:
Dividi per due il numero che vuoi e tieni i resti fino ad arrivare a zero poi leggi tutti i resti dal basso verso l'alto e quello è il codice binario...
ex: 2
2 / 2 = 1 r. 0
1 / 2 = 0 r. 1
             ^
              |
numero decimale = 2
numero binario = 10
però non so dirti come si possa fare con il codice:d...ciao scusa:d:k:

Ultima modifica effettuata da LittleHacker il 02/10/2009 alle 15:49
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 16:32
Venerdì, 02/10/2009
Senza scervellare, potresti fare così come ha detto il compagno sopra facendolo in calcoli aritametici usando % poi quando devi stampare su video, fai la stampa dall'ultimo elemento dell'array fino al primo elemento dell'array. Così ottieni esattamente il numero binario di un numero decimale. (non è corretto, ma è una "scappatoia" chiamiamolo così :D)

Comunque c'è una funzione della libreria <algorithm> che permette proprio la inversione della stringa -> reverse(stringa.begin, stringa.end);

Se qualcuno mostra un algoritmo migliore, ben venga! ^^

Ultima modifica effettuata da Lawliet il 02/10/2009 alle 16:43
PM Quote
Avatar
marc 966 (Normal User)
Rookie


Messaggi: 32
Iscritto: 04/09/2009

Segnala al moderatore
Postato alle 16:36
Venerdì, 02/10/2009
e x l' esadecimale come posso fare? xke ci sono le lettere oltre ai numeri...

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 16:44
Venerdì, 02/10/2009
EDIT: però una cosa c'è da dire.. tu stai programmando in C o C++? Se stai facendo in C++ allora usa String! E' fatto per il C++! :)

ovviamente non puoi usare la funzione che ti ho detto precedentemente.

Ultima modifica effettuata da Lawliet il 02/10/2009 alle 16:50
PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 17:08
Venerdì, 02/10/2009
Testo quotato

Postato originariamente da marc 966:

e x l' esadecimale come posso fare? xke ci sono le lettere oltre ai numeri...



Prendi il tuo numero decimale e lo dividi x 16, e tieni il resto.
Vsi avanti cosi fino a che non puoi più dividere.
E' uguale al binario e a qualunque altra base.
Se non ti è chiaro:

http://it.wikipedia.org/wiki/Sistema_numerico_esadecimale :k:

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:21
Venerdì, 02/10/2009
Ma lui kiedere per convertirlo da bninario a lettere(se ci sono)...:k:

PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 18:11
Venerdì, 02/10/2009
una delle possibili soluzioni è:
se il resto è maggiore di 9 allora guarda di quanto è maggiore e assegnagli la lettera corrispondente.
mi pare però ovvio a questo punto che il vettore in cui dovrà essere memorizzato il numero esadecimale dovrà essere di caratteri e non di interi

PM Quote
Avatar
marc 966 (Normal User)
Rookie


Messaggi: 32
Iscritto: 04/09/2009

Segnala al moderatore
Postato alle 21:02
Sabato, 03/10/2009
non è che mi potete fare una specie di programma xke io ci ho di nuovo provato ma non ci riesco... grazie a tutti x le risposte comunque.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo