Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <math.h>
  6.  
  7. #define MAX 1001
  8.  
  9. /*
  10.     Zadatak je sa kursa "Uvod u algoritme" sa sajta petlja.org
  11.     lekcija: Uvod
  12.     zadatak: sabiranje 4
  13.  
  14.  
  15.     max vreme:          1s
  16.     max memorija:   1000mb
  17.     ulaz:                       stdin
  18.     izlaz:                  stdout
  19.  
  20.  
  21.     1) U prvom redu standardnog ulaza se nalazi broj A. U drugom redu se nalazi broj B.
  22.     2) U prvom redu standardnog izlaza ispisati zbir brojeva A i B.
  23.     3) Ograničenja: -10^1000 <= A, B <= 10^1000
  24.  
  25.  
  26. */
  27.  
  28.  
  29. int main(){
  30.  
  31.     char A[MAX], B[MAX];
  32.     int C[MAX];
  33.  
  34.     scanf("%s", A);
  35.     scanf("%s", B);
  36.  
  37.     int nA = strlen(A);
  38.     int nB = strlen(B);
  39.  
  40.     char tmp;
  41.     int i, j;
  42.  
  43.  
  44.     i = 0;
  45.     j = nA - 1;
  46.  
  47.     // obrtanje oba stringa:
  48.  
  49.     while(i <= j){     
  50.  
  51.         tmp = A[i];
  52.         A[i] = A[j];
  53.         A[j] = tmp;
  54.  
  55.         i++;
  56.         j--;
  57.     }
  58.  
  59.     i = 0;
  60.     j = nB - 1;
  61.  
  62.     while(i <= j){
  63.  
  64.         tmp = B[i];
  65.         B[i] = B[j];
  66.         B[j] = tmp;
  67.  
  68.         i++;
  69.         j--;
  70.     }
  71.  
  72.     int prenos = 0;
  73.     int tmp2;
  74.  
  75.     i = 0;
  76.     j = 0;
  77.     int k = 0;
  78.  
  79.     // sabiranje cifru po cifru i dodavanje u novi niz
  80.  
  81.     while(1){
  82.  
  83.         if(i < nA && j < nB){
  84.            
  85.             tmp2 = (A[i] - '0') + (B[j] - '0') + prenos;
  86.  
  87.             if(tmp2 > 9){
  88.                 tmp2 %= 10;
  89.                 prenos = 1;
  90.             }
  91.             else
  92.                 prenos = 0;
  93.  
  94.             i++;
  95.             j++;
  96.            
  97.         }
  98.         else if(j >= nB){
  99.            
  100.             tmp2 = (A[i] - '0') + prenos;
  101.             if(tmp2 > 9){
  102.                 tmp2 %= 10;
  103.                 prenos = 1;
  104.             }
  105.             else
  106.                 prenos = 0;
  107.  
  108.             i++;
  109.        
  110.         }
  111.         else if(i >= nA){
  112.            
  113.             tmp2 = (B[j] - '0') + prenos;
  114.             if(tmp2 > 9){
  115.                 tmp2 %= 10;
  116.                 prenos = 1;
  117.             }
  118.             else
  119.                 prenos = 0;
  120.  
  121.             j++;   
  122.                
  123.         }
  124.  
  125.         C[k] = tmp2;
  126.  
  127.         k++;
  128.  
  129.         if(i >= nA && j>= nB)
  130.             break;
  131.  
  132.     }
  133.  
  134.     if(prenos == 1){
  135.         C[k] = 1;
  136.         k++;
  137.     }
  138.  
  139.     // printanje niza od pozadi
  140.  
  141.     for(i = k-1; i>=0; i--)
  142.         printf("%d", C[i]);
  143.  
  144.     printf("\n");
  145.  
  146.     return 0;
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement