Somma di 2 numeri binari.

di il
26 risposte

Somma di 2 numeri binari.

Buon pomeriggio a tutti , sto creando un programma di C che dati 2 numeri binari in ingresso ne effettui la somma .
Sono arrivato al punto di inserimento numeri, e noto nella stampa alla fine di questo pezzo di programma che i bit sono stampati dal piu significativo al meno significativo quando in realtà dovrebbe essere al contrario, qualcuno sa darmi una mano??
#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    int i,j;
    int n,m; 
    int a[i];
    int b[j];
    
    printf("Inserimento primo numero...\n");
    
    printf("Inserire numero elementi:\t");
    scanf("%d",&n);
    
    for(i=0;i<=n-1;i++)
      {
                         printf("Inserire elemento a[%d]:\t\t",i);
                         scanf("%d",&a[i]);
                         }
                         
                         
    printf("Inserimento secondo numero...\n");
    
    printf("Inserire numero elementi:\t");
    scanf("%d",&m); 
                      
    

   for(j=0;j<=m-1;j++)
      {
                         printf("Inserire elemento b[%d]:\t\t",j);
                         scanf("%d",&b[j]);
                     }
    printf("\n\n");                   
  
  printf("Il prino numero e:"); 
                          
  for(i=0;i<=n-1;i++){ 
  printf("%d",a[i]);
                                             
                     }
                     
         
   printf("\n\n");            
   printf("Il secondo numero e':"); 
                                  
   for(j=0;j<=m-1;j++){ 
   printf("%d",b[j]);
                     
                     } 
                       getchar();
                       getchar();
                       }
                     
                    
                                                        




26 Risposte

  • Re: Somma di 2 numeri binari.

    Dovrei fare for(i=n;i=0;i--) ?
  • Re: Somma di 2 numeri binari.

    Capito , io nel frattempo stavo procedendo con il cercare di completare il programma della somma con questa parte :
    /*p=n+2;
        
        
        for(i=0;i<=n-1;i++)
         {
                      for(j=0;j<=m-1;j++)
                      {               
                        for(q=0;q<=p-1;q++)
                      {               
                       if (a[i]==0&&b[j]==0){
                           c[q]==0;}
                           
                           else if (a[i]==1&&b[j]==0){
                                c[q]==1;}
                                
                                else if(a[i]==0&&b[j]==1){
                                     c[q]==1;}
                                     //else if(a[i]==1&&b[j]==1){
                                            else{
                                          c[q]==0;
                                          c[q+1]==1;
                                          }
                                          }
                                          }
                                          }
                                
      printf("Il risultato e':"); 
                                      
       for(q=p;q>=0;q--){ 
       printf("%d",c[q]);                 
                                          }
                                          getchar();
                                          getchar();
                                          }
                                                            
    */
    
    
    
    solo che non mi visualizza nulla nell'exe...
  • Re: Somma di 2 numeri binari.

    Al controllo delle condizioni lascio == mentre alle assegnazioni = ma non mi cambia moltissimo !!
    Non mi manda l'exe
  • Re: Somma di 2 numeri binari.

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        
        int i,j,q;
        int n,m,p;
        int a[i];
        int b[j];
        int c[q];
        
        printf("Inserimento primo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&n);
        
        for(i=0;i<=n-1;i++)
          {
                             printf("Inserire elemento a[%d]:\t\t",i);
                             scanf("%d",&a[i]);
                             }
                             
                             
        printf("Inserimento secondo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&m); 
                          
        
    
       for(j=0;j<=m-1;j++)
          {
                             printf("Inserire elemento b[%d]:\t\t",j);
                             scanf("%d",&b[j]);
                         }
        printf("\n\n");                   
      
      printf("Il prino numero e:"); 
                              
      for(i=n-1;i>=0;i--){ 
      printf("%d",a[i]);
                                                 
                         }
                         
             
       printf("\n\n");            
       printf("Il secondo numero e':"); 
                                      
       for(j=m-1;j>=0;j--){ 
       printf("%d",b[j]);
                         
                         } 
                           
      p=n+2;
        
        
        for(i=0;i<=n-1;i++)
         {
                      for(j=0;j<=m-1;j++)
                      {               
                        for(q=0;q<=p-1;q++)
                      {   
                          //c[q]=a[i]+b[j];
                                       
                       if (a[i]==0&&b[j]==0)
                           c[q]=0;
                           
                           else if (a[i]==1&&b[j]==0)
                                c[q]=1;
                                
                                else if(a[i]==0&&b[j]==1)
                                     c[q]=1;
                                     //else if(a[i]==1&&b[j]==1){
                                            else{
                                          c[q]=0;
                                          c[q+1]=1;
                                          }
                                          }
                                          }
                                          }
                                
      printf("Il risultato e':"); 
                                      
       for(q=p-1;q>=0;q--) 
       printf("%d",c[q]);                 
                                          
                                          getchar();
                                          getchar();
                                          }
    
    
    
  • Re: Somma di 2 numeri binari.

    Non ho capito scusa.. :/
  • Re: Somma di 2 numeri binari.

    Non ho capito perche penso che tu ti riferisci alle inizializzazioni fatte all'inizio del main , ma io non vedo nulla di strano anche perche la prima parte del programma funziona correttamente!
  • Re: Somma di 2 numeri binari.

    Dovrei quindi aggiungere queste 2 condizioni dopo p=n+2 ; ?

    int a[n];
    int b[m];
    int c[q];
  • Re: Somma di 2 numeri binari.

    Adesso l'exe parte , ma come risultato mi da sempre 0 qualsiasi siano i numeri e i bit...
  • Re: Somma di 2 numeri binari.

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        
        int i,j,q;
        int n,m,p;
       // int a[i];
        //int b[j];
        //int c[q];
        
        printf("Inserimento primo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&n);
        
        int a[n]; 
        
        for(i=0;i<=n-1;i++)
          {
                             printf("Inserire elemento a[%d]:\t\t",i);
                             scanf("%d",&a[i]);
                             }
                             
                             
        printf("Inserimento secondo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&m);
        
        int b[m]; 
                          
        
    
       for(j=0;j<=m-1;j++)
          {
                             printf("Inserire elemento b[%d]:\t\t",j);
                             scanf("%d",&b[j]);
                         }
        printf("\n\n");                   
      
      printf("Il prino numero e:"); 
                              
      for(i=n-1;i>=0;i--){ 
      printf("%d",a[i]);
                                                 
                         }
                         
             
       printf("\n\n");            
       printf("Il secondo numero e':"); 
                                      
       for(j=m-1;j>=0;j--){ 
       printf("%d",b[j]);
                         
                         } 
                           
      p=n+2;
      int c[p];
      
        
        
        for(i=0;i<=n-1;i++)
         {
                      for(j=0;j<=m-1;j++)
                      {               
                        for(q=0;q<=p-1;q++)
                      {   
                          //c[q]=a[i]+b[j];
                                       
                       if (a[i]==0&&b[j]==0)
                           c[q]=0;
                           
                           else if (a[i]==1&&b[j]==0)
                                c[q]=1;
                                
                                else if(a[i]==0&&b[j]==1)
                                     c[q]=1;
                                     //else if(a[i]==1&&b[j]==1){
                                            else{
                                          c[q]=0;
                                          c[q+1]=1;
                                          }
                                          }
                                          }
                                          }
      printf("\n\n");                           
      printf("Il risultato e':"); 
                                      
       for(q=p-1;q>=0;q--) 
       printf("%d",c[q]);                 
                                          
                                          getchar();
                                          getchar();
                                          }
                                          
    
    
    
    
    

    Ho sistemato cosi , per me è corretto però non funziona quindi presumo di no , e non riesco a poter vedere l'errore..
  • Re: Somma di 2 numeri binari.

    Ho modificato cosi il tutto aggiungendo il riporto , ma niente....non credo ci riuscirò!!

    
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        
        int i,j,q,z;
        int n,m,p,w;
       // int a[i];
        //int b[j];
        //int c[q];
        
        printf("Inserimento primo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&n);
        
        int a[n]; 
        
        for(i=0;i<=n-1;i++)
          {
                             printf("Inserire elemento a[%d]:\t\t",i);
                             scanf("%d",&a[i]);
                             }
                             
                             
        printf("Inserimento secondo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&m);
        
        int b[m]; 
                          
        
    
       for(j=0;j<=m-1;j++)
          {
                             printf("Inserire elemento b[%d]:\t\t",j);
                             scanf("%d",&b[j]);
                         }
        printf("\n\n");                   
      
      printf("Il prino numero e:"); 
                              
      for(i=n-1;i>=0;i--){ 
      printf("%d",a[i]);
                                                 
                         }
                         
             
       printf("\n\n");            
       printf("Il secondo numero e':"); 
                                      
       for(j=m-1;j>=0;j--){ 
       printf("%d",b[j]);
                         
                         } 
                           
      p=n+2;
      w=n+2;
      int c[p];
      int r[w];
      
        
        
        for(i=0;i<=n-1;i++)
         {
                      for(j=0;j<=m-1;j++)
                      {               
                        for(q=0;q<=p-1;q++)
                        
                      {   
                          for(z=0;z<=w-1;z++)
                          {
                          //c[q]=a[i]+b[j]+r[z];
                                       
                       if (a[i]==0&&b[j]==0)
                           r[z]=0;
                           
                           else if (a[i]==1&&b[j]==0)
                                r[z]=1;
                                
                                
                                else if(a[i]==0&&b[j]==1)
                                     r[z]=1;
                                     //else if(a[i]==1&&b[j]==1){
                                            else{
                                          r[z]=0;
                                          r[z+1]=1;}
                        c[q]=a[i]+b[j]+r[z];                  
                                          
                                          }
                                          }
                                          }
                                          }
                                          
      printf("\n\n");                           
      printf("Il risultato e':"); 
                                      
       for(q=p-1;q>=0;q--) 
       printf("%d",c[q]);                 
                                          
                                          getchar();
                                          getchar();
                                          }
                                          
    
    
  • Re: Somma di 2 numeri binari.

    Ok grazie mille gentilissimo , spero che lo modificherai sempre seguendo ciò che ho fatto io , magari aggiustandolo..
  • Re: Somma di 2 numeri binari.

    Non mi visualizza la somma!!

    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        
        int i,j,q,z;
        int n,m,p,w;
       // int a[i];
        //int b[j];
        //int c[q];
        
        printf("Inserimento primo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&n);
        
        int a[n]; 
        
        for(i=0;i<=n-1;i++)
          {
                             printf("Inserire elemento a[%d]:\t\t",i);
                             scanf("%d",&a[i]);
                             }
                             
                             
        printf("Inserimento secondo numero...\n");
        
        printf("Inserire numero elementi:\t");
        scanf("%d",&m);
        
        int b[m]; 
                          
        
    
       for(j=0;j<=m-1;j++)
          {
                             printf("Inserire elemento b[%d]:\t\t",j);
                             scanf("%d",&b[j]);
                         }
        printf("\n\n");                   
      
      printf("Il prino numero e:"); 
                              
      for(i=n-1;i>=0;i--){ 
      printf("%d",a[i]);
                                                 
                         }
                         
             
       printf("\n\n");            
       printf("Il secondo numero e':"); 
                                      
       for(j=m-1;j>=0;j--){ 
       printf("%d",b[j]);
                         
                         } 
                         
                         
                         
           if (n > m)
           p = n + 1;
       else
           p = m + 1;
      int c[p];
      int base = 2;
      int r = 0;
      int cifra;
      for (q = 0; q < p; q++) {
          cifra = a[q] + b[q] + r;
          if (cifra >= base) {
              r = 1;
              cifra %= base;
          }
          else
              r = 0;
          c[q] = cifra;
      }
      getchar();
      getchar();
    }                 
             
    
    
    
  • Re: Somma di 2 numeri binari.

    Non ho capito!!
  • Re: Somma di 2 numeri binari.

    Aggiungendo il printf finale per la somma non me la visualizza ugualmente!!!
Devi accedere o registrarti per scrivere nel forum
26 risposte