Đề bài : Cho 2 số rất lớn được biểu diễn như xâu kí tự.Nhiệm vụ của bạn là tìm tổng 2 số đó.Em làm bằng cách sử dụng vector:
B1:tìm số nào có độ dài lớn hơn,thêm số 0 vào số nhỏ hơn để có 2 số có độ dài bằng nhau
B2:cộng 2 số
Em làm nhưng cứ bị lỗi.Anh chị giúp em với ạ.Em cám ơn
#include<string.h>
#include<vector>
using namespace std;
void Init(char str[],vector<int> &v) {
for(int i=0;i<strlen(str);i++) {
v.push_back(str[i] - '0');
}
}
void print(vector<int> v) {
for(int i=0;i<v.size();i++) {
cout<<v[i];
}
}
void add(vector<int>v1, vector<int>v2, vector<int>&v3) {
v3.clear();
//tim ra so lon hon
int length=v1.size() > v2.size() ? v1.size() : v2.size();
//gan so 0 vao so nho hon de 2 so cos do dai bang nhau
v1.resize(length);
v2.resize(length);
int temp=0;
int extra=0; // so du
for(int i=length-1;i>=0;i--) {
temp=v1[i] + v2[i] + extra;
v3.push_back(temp%10);
extra=temp/10;
}
if(extra>0) v3.push_back(extra);
}
int main() {
char a[100];
gets(a);
char b[100];
gets(b);
vector <int> v1,v2,v3;
Init(a,v1);
// print(v1);
Init(b,v2);
// cout<<endl;
// print(v2);
add(v1,v2,v3);
print(v3);
}