PDA

Visualizza la versione completa : [C++] Semplificazione esercizio di trasformazione da decimale a binario


futureshow11
30-11-2007, 21:50
Ascolta io ho fatto questo esercizio, in poche parole da un numero decimale, melo trasforma in numero binario, solo che non posso consegnarlo cosė, come posso semplificarlo??

Help, siete grandi lo so!!



#include<conio.h>
#include<math.h>
#include<iostream.h>

void main(){

clrscr();
int n1,n2,somma,x;
int xn1,g,g1,g2,f,f1,f2,e,e1,e2,d,d1,d2,c,c1,c2,b,b1,b 2,a,a1,a2;
int teorema1;
int segno;

cout<<"Inserire il numero da convertire ";
cin>>n1;
xn1=0;
if (n1>=0){

while (xn1<=7){
g=n1%2;
g1=n1/2;
f=g1%2;
f1=g1/2;
e=f1%2;
e1=f1/2;
d=e1%2;
d1=e1/2;
c=d1%2;
c1=d1/2;
b=d1%2;
b1=d1/2;
a=b1%2;
a1=b1/2;
xn1=xn1+7;
}
segno=0;
cout<<"\nLa conversione in binario del primo numero "<<segno<<a<<b<<c<<d<<e<<f<<g;
}
else{
teorema1=128+(n1);
x=teorema1;
while (xn1<=7){
g=x%2;
g1=x/2;
f=g1%2;
f1=g1/2;
e=f1%2;
e1=f1/2;
d=e1%2;
d1=e1/2;
c=d1%2;
c1=d1/2;
b=d1%2;
b1=d1/2;
a=b1%2;
a1=b1/2;
xn1=xn1+7;
}
segno=1;
cout<<"\nLa conversione in binario del numero "<<segno<<a<<b<<c<<d<<e<<f<<g;
}

getch();
}


Fatemi sapere

oregon
30-11-2007, 21:57
Ma i cicli li hai studiati?

futureshow11
30-11-2007, 22:29
Originariamente inviato da oregon
Ma i cicli li hai studiati?


Si certo li ho studiati, e lo so benissimo che il ciclo che ho messo non serve proprio a niente!! il problema che se lascio una sola variabile facendo iterare il ciclo, non mi da il risultato giusto, quindi vorrei un consiglio da voi su come fare!!

mamo139
30-11-2007, 22:59
io farei cosė un programma per convertire i decimali in numeri binari, mi sembra molto piu facile. (chiaramente il numero binario esce al contrario nel mio esempio, ma poi girarlo č facile :) )



#include <stdio.h>
#include <windows.h>

int main (void){

char bin[200];
int dec = 425, x;
for(x=0; dec>=1 ; x++){
int resto = dec % 2;
printf("%d %d\n",dec,resto);
dec = dec /2;
if(resto == 0) bin[x] = '0';
if(resto == 1) bin[x] = '1';

}
bin[x]='\0';
printf("%s\n",bin);
system("pause");

}

MItaly
01-12-2007, 16:03
#include <iostream>
using namespace std;

int main()
{
unsigned int inputN;
cout<<"Inserisci il numero: ";
cin>>inputN;
for(int counter=sizeof(inputN)*8;counter;counter--)
cout<<((inputN&(1<<(counter-1)))?'1':'0'); //Il numero di parentesi esagerato dipende dal fatto che non mi ricordo mai la precedenza degli operatori bit-a-bit
return 0;
}

---EDIT---
Vedo ora che deve saper gestire anche il segno...


#include <iostream>
using namespace std;

int main()
{
int inputN;
cout<<"Inserisci il numero: ";
cin>>inputN;
if(inputN<0)
{
cout<<'-';
inputN=-inputN;
}
for(int counter=sizeof(inputN)*8;counter;counter--)
cout<<((inputN&(1<<(counter-1)))?'1':'0');
return 0;
}

---Ultimo EDIT---
Se vuoi anche che non ci siano tutti gli 0 "inutili" all'inizio:


#include <iostream>
using namespace std;

int main()
{
int inputN;
bool first1;
cout<<"Inserisci il numero: ";
cin>>inputN;
if(inputN<0)
{
cout<<'-';
inputN=-inputN;
}
for(int counter=sizeof(inputN)*8;counter;counter--)
{
if(inputN&(1<<(counter-1)))
{
first1=true;
cout<<'1';
}
else if(first1)
cout<<'0';
}
return 0;
}

futureshow11
01-12-2007, 16:21
Una sola cosa vi dvo DIRE!!!

SIETE GRANDI!!

MItaly
01-12-2007, 16:31
Oddio... "grande" per un programmino del genere... :malol:

futureshow11
01-12-2007, 16:34
non tanto per il programma, per l'aiuto che sempre mi date!!

Loading