Mình là newbie thôi. Mình code trên visual studio 2015 bài này. Khá là dài bạn có thể tham khảo.
Mã:
#include<stdio.h>#include<conio.h>#include<iostream>char *tong2so(char a[], char b[]){ char *p = new char[21]; int x[20]; int y[20]; int z[22]; for (int i = 0; i < 20; i++) // Scan chuyển đổi chuỗi vào 2 mảng kiểu int để tính toán. Ví dụ kiểu char là kí tự 1 thì đổi thành số 1 { if (a[i] == 48) x[i] = 0; if (a[i] == 49) x[i] = 1; if (a[i] == 50) x[i] = 2; if (a[i] == 51) x[i] = 3; if (a[i] == 52) x[i] = 4; if (a[i] == 53) x[i] = 5; if (a[i] == 54) x[i] = 6; if (a[i] == 55) x[i] = 7; if (a[i] == 56) x[i] = 8; if (a[i] == 57) x[i] = 9; if (b[i] == 48) y[i] = 0; if (b[i] == 49) y[i] = 1; if (b[i] == 50) y[i] = 2; if (b[i] == 51) y[i] = 3; if (b[i] == 52) y[i] = 4; if (b[i] == 53) y[i] = 5; if (b[i] == 54) y[i] = 6; if (b[i] == 55) y[i] = 7; if (b[i] == 56) y[i] = 8; if (b[i] == 57) y[i] = 9; } int check = 0; // Kiểu tra điều kiện cộng có nhớ for (int i = 19; i >= 0; i--) { if (check == 0) // Trường hợp không nhớ { if ((x[i] + y[i]) >= 0 && ((x[i] + y[i]) <= 9)) // Tổng hai số lớn hơn bàng 0 và nhỏ hơn bàng 9 { if (i == 0) z[0] = 0; // trường hợp i==0 phải xét riêng bởi vì nếu x[0]+y[0] > 9 thì thành số có 21 chữ số z[i+1] = x[i] + y[i]; check = 0; continue; } if ((x[i] + y[i]) > 9) { if (i == 0) { z[1] = (a[i] + b[i]) % 10; z[0] = ((x[i] + y[i]) / 10) % 10; continue; } else { z[i + 1] = (x[i] + y[i]) % 10; check = 1; continue; } } } else { if ((x[i] + y[i] + 1) >= 0 && ((x[i] + y[i] + 1) <= 9)) { if (i == 0) z[0] = 0; z[i+1] = x[i] + y[i] + 1; check = 0; continue; } if ((x[i] + y[i] + 1) > 9) { if(i==0) { z[1] = (x[i] + y[i]+1) % 10; z[0] = ((x[i] + y[i]+1) / 10) % 10; continue; } else { z[i + 1] = (x[i] + y[i] + 1) % 10; check = 1; continue; } } } } int i; if (z[0] == 0) // số cộng được có 20 chữ số { for (i = 1; i < 21; i++) // chuyển đổi từ mảng int thành chuỗi char để return { if (z[i] == 0) p[i - 1] = 48; if (z[i] == 1) p[i - 1] = 49; if (z[i] == 2) p[i - 1] = 50; if (z[i] == 3) p[i - 1] = 51; if (z[i] == 4) p[i - 1] = 52; if (z[i] == 5) p[i - 1] = 53; if (z[i] == 6) p[i - 1] = 54; if (z[i] == 7) p[i - 1] = 55; if (z[i] == 8) p[i - 1] = 56; if (z[i] == 9) p[i - 1] = 57; } p[i-1] = 0; // phần tử để kết thúc sâu } else // trường hợp có 21 chữ số { for (i = 0; i < 21; i++) { if (z[i] == 0) p[i] = 48; if (z[i] == 1) p[i] = 49; if (z[i] == 2) p[i] = 50; if (z[i] == 3) p[i] = 51; if (z[i] == 4) p[i] = 52; if (z[i] == 5) p[i] = 53; if (z[i] == 6) p[i] = 54; if (z[i] == 7) p[i] = 55; if (z[i] == 8) p[i] = 56; if (z[i] == 9) p[i] = 57; } p[i] = 0;// phần tử kết thúc sâu } return p;}void main(){ char a[] = "95132546251235874562"; char b[] = "25132645621664116266"; std:: cout <<tong2so(a, b); _getch();}
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...