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

    [C++] Semplificazione Esercizio

    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!!

    codice:
    #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,b2,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
    Non esiste grande genio senza una dose di Follia!! ;o)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma i cicli li hai studiati?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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!!
    Non esiste grande genio senza una dose di Follia!! ;o)

  4. #4
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    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 )

    codice:
    #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");
    
    }

  5. #5
    codice:
    #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...
    codice:
    #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:
    codice:
    #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;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Una sola cosa vi dvo DIRE!!!

    SIETE GRANDI!!
    Non esiste grande genio senza una dose di Follia!! ;o)

  7. #7
    Oddio... "grande" per un programmino del genere...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    non tanto per il programma, per l'aiuto che sempre mi date!!
    Non esiste grande genio senza una dose di Follia!! ;o)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.