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 che deve effettuere il complemento a due di un numero binario
Forum - C/C++ - programma che deve effettuere il complemento a due di un numero binario

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 22:48
Mercoledì, 14/10/2009
il ciclo di inserimento non finisce mai di girare e non capisco il motivo me lo sapete spiegare?
mille grazie a chi mi saprà aiutare!:)
sapete come posso migliorarlo?


Codice sorgente - presumibilmente C++

  1. void complem()
  2. {
  3.         int num=0,bit=0,app=0,i=0;
  4.         int vett[50];
  5.         bool same=false;
  6.         for(i=0;i<50;i++)
  7.         {
  8.                 vett[i]=0;
  9.         }
  10.         cout<<"inserisci la lunghezza del numero da convertire :"<<endl;
  11.         cin>>num;
  12.         int k=-1;
  13.         do
  14.         {
  15.                 k=k+1;
  16.                 cout<<"inserisci il valore del bit partendo da destra verso sinistra!!"<<endl;
  17.                 cin>>bit;
  18.                 if(k=0&&bit==0)
  19.                 {
  20.                      vett[k]=bit;
  21.                          same=false;
  22.                 }
  23.                 if(k==0&&bit==1)
  24.                 {
  25.                           app=bit;
  26.                           vett[k]=app;
  27.                           same=true;
  28.                 }
  29.                 if(k!=0&&same==true)
  30.                 {
  31.                 if(bit==0)
  32.                         {
  33.                                 same=false;
  34.                                 vett[k]=bit+1;
  35.                         }
  36.                         else if(bit==1)
  37.                         {
  38.                                 vett[k]=bit;
  39.                                 same=true;
  40.                         }
  41.                 }
  42.                 if(k!=0&&same==false)
  43.                 {
  44.                         vett[k] = !(bit);
  45.                 }
  46.                
  47.         }
  48.         while(k!=num);
  49.                
  50.        
  51.         for(i=0;i<num;i++)
  52.     {
  53.       cout<<vett[i];
  54.  
  55.     }
  56.  
  57.  
  58.  
  59. }


PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 0:36
Sabato, 17/10/2009
Il problema sta in questa linea:
Codice sorgente - presumibilmente Plain Text

  1. if(k=0&&bit==0) //Errore
  2.         {
  3.              vett[k]=bit;
  4.              same=false;
  5.         }



Hai usato l'operatore di assegnamento, non quello di confronto.
In tal modo la variabile k viene reimpostata a 0 ad ogni iterazione e il ciclo diventa infinito...

Ultima modifica effettuata da Matthew il 17/10/2009 alle 0:37
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 10:31
Sabato, 17/10/2009
verissimo grazie nn l'avevo notato

PM Quote