Dodawanie

0

Pilnie potrzebuję pomocy z tym kodem. Nie wiem jak poprawić błędy, program źle dodaje. Bardzo proszę o pomoc :(

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

int len(int x){
    int l = 0, i = x;
    while (i>0){
        i /= 10;
        l++;
    }
    return l;
}

int* num_to_arr (int x){
    int* arr = (int*) malloc(len(x) * sizeof(int));
    int i = len(x)-1;
    while (i>=0){
        arr[i] = x%10;
        x /= 10;
        i--;
    }
    return arr;
}

int main (void){
    int a, b, i;
    printf("a = ");
    scanf("%d", &a);
    printf("b = ");
    scanf("%d", &b);
  
    int* A = num_to_arr(a);
    int* B = num_to_arr(b);

    int difa=0, difb=0;
    if (len(a)>=len(b)){
        difb = len(a) - len(b);
    }
    else {
        difa = len(b) - len(a);
    }
    int lena = len(a), lenb = len(b), one=0;
    int lenc = (lena>lenb) ? lena : lenb;
    int O[lenc-1];
    for (i=lenc-1; i>=0; i--){
        if (lena < 0 || lenb < 0){
            one = 0;
            O[i] = 0;
        }
        else if (A[lena-1] + B[lenb-1] > 9){
            one = 1;
            O[i] = 1;
        }
        else {
            one = 0;
            O[i] = 0;
        }
        lena--;
        lenb--;
    } 
   int c = a + b;
   int* C = num_to_arr(c);
    char spaceone[lenc-1];
    for (i=0; i<lenc; i++){
        if (O[i] == 0){
            spaceone[i] = 32;
        }
        else {
            spaceone[i] = 49;
        }    
    }
    printf("%s", spaceone);
    // for (i=0; i<lenc; i++){
    //     printf("%d", O[i]);
    // }
    printf("\n");
    for(i=0; i<=difa; i++){
        printf(" ");
    }
    for (i=0; i<len(a); i++){
        printf("%d", A[i]);
    }
    printf("\n+");
    for(i=0; i<difb; i++){
        printf(" ");
    }
    for (i=0; i<len(b); i++){
        printf("%d", B[i]);
    }
    printf("\n ");
    for (i=0; i<lenc; i++){
        printf("-");
    }
    printf("\n");
    if (one == 1){
        printf("%d", one);
    }
    else{
        printf(" ");
    }
    for (i=0; i<lenc; i++){
        printf("%d", C[i]);
    }

    free(A);
    free(B);
    return 0;
}
1

Z cyklu... Andrzej, to jebnie... I jebło. Kosz, bo szkoda się w tym grzebać.

l_17264746caa598fandrzej_to_jebnie.jpg

1 użytkowników online, w tym zalogowanych: 0, gości: 1