Oppure

Loading
02/10/09 13:31
marc 966
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[i]=a;
a=a*2;
}
ve[0]=1;
for (i=0;i<10;i++){
ve[i]=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[i];
}
aaa
02/10/09 13:48
LittleHacker
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 02/10/09 13:49
aaa
02/10/09 14:32
Lawliet
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 02/10/09 14:43
aaa
02/10/09 14:36
marc 966
e x l' esadecimale come posso fare? xke ci sono le lettere oltre ai numeri...
aaa
02/10/09 14:44
Lawliet
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 02/10/09 14:50
aaa
02/10/09 15:08
ingMark
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:

it.wikipedia.org/wiki/… :k:
aaa
02/10/09 15:21
LittleHacker
Ma lui kiedere per convertirlo da bninario a lettere(se ci sono)...:k:
aaa
02/10/09 16:11
ingMark
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
aaa