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++ - aiuto c++
Forum - C/C++ - aiuto c++

Avatar
d4nd1 (Normal User)
Newbie


Messaggi: 1
Iscritto: 19/10/2009

Segnala al moderatore
Postato alle 17:23
Lunedì, 19/10/2009
giorno ragazzi dovevo fare una somma tra 2 numeri binari ma ci ho provato e nn ci riesco premetto ke sono agli inizi io ho scritto questo e sò ke è sbajato mi dareste una mano?
usando solo if ed else...


Codice sorgente - presumibilmente C/C++

  1. #include<stdio.h>
  2. main()
  3. {
  4.       int a1,a2,a3,a4,b1,b2,b3,c,e,f,g,d=0,h=0,i=0,n=0,m=0;
  5.       printf("Inserisci primo numero binario");
  6.       scanf("%d",&a1);
  7.       printf("Inserisci primo numero binario");
  8.       scanf("%d",&a2);
  9.       printf("Inserisci primo numero binario");
  10.       scanf("%d",&a3);
  11.       printf("Inserisci primo numero binario");
  12.       scanf("%d",&a4);
  13.       printf("Inserisci secondo numero binario");
  14.       scanf("%d",&b1);
  15.       printf("Inserisci secondo numero binario");
  16.       scanf("%d",&b2);
  17.       printf("Inserisci secondo numero binario");
  18.       scanf("%d",&b3);
  19.      
  20.      
  21.       c=a4+b3;
  22.        if (a4+b3==0&2)
  23.        {c=0;}
  24.        if (a4+b3==1&3)
  25.        {c=1;}
  26.        if (a4+b3==2&3)
  27.        {d=d+1;}
  28.        e=a3+b2+c;
  29.        if (a3+b2+c==0&2)
  30.        {c=0;}
  31.        if (a3+b2+c==1&3)
  32.        {c=1;}
  33.        if (a3+b2+c==2&3)
  34.        {d=h+1;}
  35.        f=a2+b1+e;
  36.        if (a2+b1+e==0&2)
  37.        {c=0;}
  38.        if (a2+b1+e==1&3)
  39.        {c=1;}
  40.        if (a2+b1+e==2&3)
  41.        {h=i+1;}
  42.        g=a1+f;
  43.        if (a1+f==0&2)
  44.        {c=0;}
  45.        if (a1+f==1&3)
  46.        {c=1;}
  47.        if (a1+f==2&3)
  48.        {i=m+1;}
  49.        
  50.      
  51.          printf("La somma e' :%d",g);
  52.          printf("%d",f);
  53.          printf("%d",e);
  54.          printf("%d",c);
  55.          
  56.          
  57.              
  58.        
  59.        
  60.            
  61.       getchar();
  62.       getchar();
  63.       }


PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 19:19
Lunedì, 19/10/2009
Scusa invece che fare tutto questo casino di codice non fai prima a far inserire il numero decimale e poi fare le tue operazioni e poi convertirlo in binario, oppure da binario a decimale(operazioni) e poi ancora in binario?
(l'ultimo che ho detto te lo sconsiglio)...xD:k:

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 20:44
Lunedì, 19/10/2009
Premetto che non ho neanche letto tutto il codice, perche' mai l'utente dovrebbe inserire tre volte lo stesso dato? Non ha senso...

PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 10:34
Domenica, 25/10/2009
consiglio: limitati a fare ciò che rientra nelle tue conoscenze.


con solo if ed else è abbastanza palloso.



Codice sorgente - presumibilmente C/C++

  1. int a1,a2,a3,b1,b2,b3;
  2.       printf("Inserisci primo numero binario");
  3.       scanf("%d",&a1);
  4.       printf("Inserisci primo numero binario");
  5.       scanf("%d",&a2);
  6.       printf("Inserisci primo numero binario");
  7.       scanf("%d",&a3);
  8.       printf("Inserisci secondo numero binario");
  9.       scanf("%d",&b1);
  10.       printf("Inserisci secondo numero binario");
  11.       scanf("%d",&b2);
  12.       printf("Inserisci secondo numero binario");
  13.       scanf("%d",&b3);
  14.      
  15.    
  16.     int S1=0,S2=0,S3=0,S4=0;
  17.       //prima fase: sommare il tutto
  18.     S1=a3+b3;
  19.     S2=a2+b2;    
  20.     S3=a1+b1;          
  21.     if(S1==2)
  22.        {
  23.         S1=0;
  24.         S2++;
  25.         }
  26.     if(S2==2) // questa volta potrebbe essere anche 3 contando a2 e b2 uguali a 1 e il riporto dell'operazione precedente
  27.               // (personalmente avrei usato un while ma l'ho evitato perchè probabilmente ancora non lo conosci)
  28.         {
  29.         S2=0;
  30.         S3++;
  31.         }
  32.     else if(S2==3)
  33.         {
  34.         S2=1;
  35.         S3++;
  36.         }
  37.        
  38.        if(S3==2)   // anche qui
  39.         {
  40.         S3=0;
  41.         S4++;
  42.         }
  43.     else if(S3==3)
  44.         {
  45.         S3=1;
  46.         S4++;
  47.         }
  48.        
  49.        
  50.         cout<<"\n\n\n la somma e':"<<S4<<"\t"<<S3<<"\t"<<S2<<"\t"<<S1;
  51.        
  52.       getchar();
  53.       getchar();




cmq studiati i cicli e i vettori e poi se ne riparla su questo esercizio ( non sarà più facile, sarà anche corretto anche da un punto di vista di programmazione... se mi mettessi a fare tutti i controlli necessari usando solo if ed else andrei a scrivere centinaia di righe )

Testo quotato

Postato originariamente da Matthew:

Premetto che non ho neanche letto tutto il codice, perche' mai l'utente dovrebbe inserire tre volte lo stesso dato? Non ha senso...



prende il codice binario elemento per elemento

Testo quotato

Postato originariamente da LittleHacker:

Scusa invece che fare tutto questo casino di codice non fai prima a far inserire il numero decimale e poi fare le tue operazioni e poi convertirlo in binario, oppure da binario a decimale(operazioni) e poi ancora in binario?
(l'ultimo che ho detto te lo sconsiglio)...xD:k:



prova a farti nella testa un algoritmo di soli if ed else che converte il numero binario
:rotfl: meglio di no

Ultima modifica effettuata da NickoMaiden il 25/10/2009 alle 10:38
PM Quote