Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. FILE *fin = fopen("bai3.inp", "r"), *fout = fopen("bai3.out", "w");
  6.  
  7. char sum(char a[], char b[], char c[]);
  8. void format_number(char a[], char b[]);
  9.  
  10. int main(){
  11.     int n;
  12.     fscanf(fin, "%d", &n);
  13.     char a[256], b[256], c[256];
  14.     while(n--){
  15.         fscanf(fin, "%s", &a);
  16.         fscanf(fin, "%s", &b);
  17.         printf("a = %s, b = %s\n", a, b);
  18.         sum(a, b, c);
  19.         fprintf(fout, "%s\n", c);
  20.         printf("c = %s\n", c);
  21.     }
  22.     fclose(fin);
  23.     fclose(fout);
  24. }
  25.  
  26. char sum(char a[], char b[], char c[]){
  27.     strrev(a);                                                          //dao nguoc 2 so lai
  28.     strrev(b);
  29.     int len;
  30.     if(strlen(a) > strlen(b)){
  31.         len = strlen(a) + 1;
  32.         format_number(a, b);                                            //ham nay dung de them so 0 vao so it chu so hon, vi du 1234 vs 12 thi se chuyen thanh 12340 vs 12000
  33.     }
  34.     else{
  35.         len = strlen(b) + 1;
  36.         format_number(b, a);
  37.     }
  38.     int i, t = 0;
  39.     int numa, numb;
  40.     for(i = 0; i < len; i++){                                           //cong. cac' so' theo tung` hang`
  41.         numa = a[i] - '0';
  42.         numb = b[i] - '0';
  43.         c[i] = (numa + numb + t)%10 + '0';
  44.         t = numa + numb + t>= 10 ? 1 : 0;                               //t la` so' nho, vi du 9+6 thi viet 5 nho 1
  45.     }
  46.     c[len] = '\0';
  47.     for(i = len-1; i > 0; i--){                                         //xoa so 0 thua
  48.         if(c[i] == '0'){
  49.             c[i] = '\0';
  50.         }
  51.         else
  52.             break;
  53.     }
  54.     strrev(c);
  55. }
  56.  
  57. void format_number(char a[], char b[]){
  58.     int lena = strlen(a), lenb = strlen(b);
  59.     a[lena] = '0';
  60.     for(int i = lenb; i <= lena; i++)
  61.         b[i] = '0';
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement