[ create a new paste ] login | about

Link: http://codepad.org/aASl8boq    [ raw code | output | fork ]

C, pasted on Aug 28:
#include <stdio.h>
#include <stdlib.h>

char* addBinary(char* a, char* b) {
    if (!strlen(a))
        return b;
    if (!strlen(b))
        return a;
    
    printf("a: %d\n", strlen(a));
    printf("b: %d\n", strlen(b));
    char* m;
    char* n;
    char* result;
    if (strlen(a) > strlen(b)){
        m = (char*)malloc(sizeof(char)*(strlen(a)+1));
        n = (char*)malloc(sizeof(char)*(strlen(a)+1));
        result = (char*)malloc(sizeof(char)*(sizeof(a)+1));
        memset(m, sizeof(m), '\0');
        memset(n, sizeof(n), '0');
        memset(result, sizeof(result), '\0');
        strcpy(m, a);
        strcpy(n+strlen(a)-strlen(b), b);
    }
    else{
        m = (char*)malloc(sizeof(char)*(strlen(b)+1));
        result = (char*)malloc(sizeof(char)*(strlen(b)+2));
        n = (char*)malloc(sizeof(char)*(strlen(b)+1));
        memset(m, sizeof(m), '\0');
        memset(n, sizeof(n), '0');
        memset(result, sizeof(result), '\0');
        printf("result: %d\n", sizeof(result));
        strcpy(m, b);
        strcpy(n+strlen(b)-strlen(a), a);
    }

    int flag = 0;
    int i;
    for (i = strlen(m)-1; i > -1 ; i--){
        if (m[i] + n[i] + flag == '0' * 2 + 3){
            result[i+1] == '1';
            flag = 1;
        }
        else if (m[i] + n[i] + flag == '0' * 2 + 2){
            result[i+1] = '0';
            flag = 1;
        }
        else if (m[i] + n[i] + flag == '0' * 2 + 1){
            result[i+1] = '1';
            flag = 0;
        }
        else{
            result[i+1] = '0';
            flag = 0;
        }
    }
    if (flag){
        result[0] = '1';
        return result;
    }
    return result+1;
}

int main()
{
    int i;
    i = strlen(addBinary("1", "0"));
    printf("%d", i);
}


Output:
1
2
3
4
a: 1
b: 1
result: 4
4


Create a new paste based on this one


Comments: