Thursday, December 12, 2013

Belajar Array Versi 1.0

#649 - Adder

Deskripsi

Lagi-lagi Nanda diberi sebuah tantangan. Namun, kali ini tantangannya tidak berasal dari guru Matematika nya, tetapi dari sahabat kakak nya yang sedang belajar mengenai Adder di mata kuliah Sistem Digital. Tantangannya berupa penjumlahan bilangan. Nanda yang jago menghitung, merasa sombong dan langsung menerima tantangan dari sahabat kakaknya tersebut.
Ternyata, bilangan yang diberikan bisa sangat besar, Nanda yang kewalahan meminta tolong kamu sebagai kakak yang baik dan pintar, untuk mengerjakan soal tersebut. Dan karena sebelumnya kamu belum bisa membantu Nanda menyelesaikan soalnya, Nanda sangat berharap agar kali ini permintaan tolong Nanda dapat terpenuhi :)

Format Masukan 
Masukan berisi dua buah bilangan A dan B dipisahkan sebuah operasi matematis '+' tiap barisnya sampai dengan EOF.

1 <= A,B <= 10^10000


Format Keluaran 
Sebuah bilangan hasil operasi A + B.

Contoh Input :
5 + 6
8 + 4
5040140801236012808012345360123 + 403011012345671701701
80470128012360160123040123410123456710123701234570136012360170123480123440170125012012349011 + 80123401234570150128014020125016012601233012345

Contoh Output :
11
12
5040140801639023820358017061824
80470128012360160123040123410123456710123701314693537246930320251494143565186137613245361356

Lalu Bagaimana Kodingan dengan menggunakan Bahasa C,
Mari kita simak bersama-sama

#include <stdio.h>
#include <string.h>
using namespace std;

void revers(char a[], int n){
    int i;
    char temp;
    for (i=0; i<n/2; i++){
        temp = a[i];
        a[i] = a[n-i-1];
        a[n-i-1] = temp;
    }
}

int main(){
    char input1[100000];
    char input2[100000];
    int a, b, c, d, p1, p2, i, optr;
    gets (input1);
    gets (input2);
    p1 = strlen(input1);
    p2 = strlen(input2);
    revers(input1, p1);//strrev(input1);
    revers(input2, p2);//strrev(input2);
    if (p1>p2){
        d = 0;
        for (i=0; i<p2; i++){
            a = input1[i] - 48;
            b = input2[i] - 48;
            c = a + b + d;
            if (c/10 > 0) d = c/10;
            input1[i] = c%10 + 48;
        }
        for (i=p2; i<p1; i++){
            a = input1[i] - 48; 
            if (i>=p1) a = 0;
            b = d;
            c = a + b;
            if (c/10 > 0){
                d = c/10;
                input1[i] = c%10 + 48;
            }
            else break;
        }
        revers(input1, p1);//strrev(input1);
        puts(input1);
    }
    else if (p1<p2){
        d = 0;
        for (i=0; i<p1; i++){
            a = input1[i] - 48;
            b = input2[i] - 48;
            c = a + b + d;
            if (c/10 > 0) d = c/10;
            input2[i] = c%10 + 48;
        }
        for (i=p1; i<p2; i++){
            a = input2[i] - 48; 
            if (i>=p2) a = 0;
            b = d;
            c = a + b;
            if (c/10 > 0){
                d = c/10;
                input2[i] = c%10 + 48;
            }
            else break;
        }
        revers(input2, p2);//strrev(input2);
        puts(input2);
    }
    else{
        d = 0;
        for (i=0; i<p1; i++){
            a = input1[i] - 48;
            b = input2[i] - 48;
            c = a + b + d;
            if (c/10 > 0) d = c/10;
            input2[i] = c%10 + 48;
        }
        if (d!=0){
            input2[i] = d + 48;
            input2[i+1] = '\0';
            revers(input2, p2+1);
        }
        else revers(input2, p2);
        //strrev(input2);
        puts(input2);
    }    
    getchar();
    return 0;
}



Jabir Al Hayyan

Saya adalah penulis di blog jabiralhayyan.blogspot.com. Semoga tulisan yang dimuat di blog ini bermanfaat
Comments
0 Comments

0 comments:

Post a Comment

 

Copyright @ 2013 POSITIVE THINKING.