Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: adunare in binar  (Citit de 6341 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
mircea2011
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« : Iunie 03, 2012, 10:23:18 »

Salut.
Am de rezolvat o problema si anume adunarea a doua numere in binar.
Algoritmul pe care l-am facut functioneaza pentru unele numere pentru altele nu.


Sa se realizeze programul de adunare a doua numere in binar.

#include<stdio.h>
#include<string.h>

void citire_binar(int a[], int nr)
{
    int i, t;
    char sir[33];
    printf("\n Dati numarul in binar : ");
    gets(sir);
    nr=strlen(sir);
    for(i=0; i<nr; i++)
    {
        a[nr-i-1]=sir-'0';
        t=a[nr-i-1];
    }
    for(i=nr; i<33; i++)
    a=0;
}

void adunare_binar(int a[], int b[], int c[])
{
    int i, j, t=0;
    for(i=0; i<32; i++)
    {
        c=(t+=a+b)%2;
        t/=2;
    }
}

int main()
{
    int i, k, nr_a=0, nr_b=0, a[32], b[32], c[32];
    citire_binar(a, nr_a);
   citire_binar(b, nr_b);
   adunare_binar(a, b, c);
   printf("\n");
   for(i=31; i>=0; i--)
    printf(" %d", c);
   printf("\n");
}
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Iunie 03, 2012, 10:35:19 »

Ai in acest articol mai jos numere mari, in baza 10. Poti implementa suma a doua numere mari, doar ca ele sunt in baza 2, si nu baza 10. Numarul trebuie citit in felul urmator : in A[0] ai numarul de cifre, iar de la A[1] in colo o sa ai numarul cititi in ordine inversa. Spre exemplu, numarul 12345 o sa-l ai asa : A[0] = 5 (nr. cifre), A[1] = 5, A[2] = 4 .... A[5] = 1 [asa orientativ, am vazut ca si tu ai facut cam acelasi lucru].
Cod:
void add(int A[], int B[]) {
      int i, t = 0;
      for (i=1; i<=A[0] || i<=B[0] || t; i++, t /= 2)
              A[i] = (t += A[i] + B[i]) % 2;
      A[0] = i - 1;
}
Iar de afisat afisezi asa :
Cod:
void afis (int A[]) {
    for (int i = A[0]; i > 0; --i)
        printf ("%d", A[i]);
}
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines