Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #define N 10
- using namespace std;
- int* createMas();
- int* set();
- int compare(int a[], int b[]);
- void swap(int** a, int** b);
- int* difference(int a[], int b[]);
- int* sum(int a[], int b[]);
- void printMas(int a[]);
- int main(){
- int * a = set();
- int * b = set();
- printMas(a);
- printMas(b);
- cout << "Difference: " << endl;
- int *c = difference(a,b);
- printMas(c);
- cout << "Sum: " << endl;
- c = sum(a,b);
- printMas(c);
- return 0;
- }
- int* createMas(){
- int *a = new int [N];
- for(int i = 0; i < N; i++){
- a[i] = 0;
- }
- a[0] = 1;
- return a;
- }
- int* set(){
- string s;
- cout << " Please, enter value ";
- cin >> s;
- int *a = createMas();
- int l = s.size() - 1;
- if (s[0] == '-'){
- a[0] = 0;
- s.erase(0,1);
- }
- l = s.size() - 1;
- for(int i = 0; l - i >= 0 ; i++){
- a[N-1-i] = s[l-i] - '0';
- }
- return a;
- }
- int compare(int a[], int b[]) {
- if ( a[0] == 0 && b[0] == 1 )
- return -1;
- if ( a[0] == 1 && b[0] == 0 )
- return 1;
- for(int i = 0; i < N; i++){
- if(a[i] > b[i]){
- return 1;
- }
- if(a[i] < b[i]){
- return -1;
- }
- }
- return 0;
- }
- void swap(int** a, int** b) {
- int *tmp = *a;
- *a = *b;
- *b = tmp;
- }
- int* diff_plus(int a[], int b[]){
- int *c = createMas();
- bool f = 0;
- if (compare(a,b) < 0){
- swap(a,b);
- f = 1;
- }
- for(int i = N - 1; i > 0; i--){
- c[i] = c[i] + (a[i] - b[i]);
- if (c[i] < 0){
- c[i] = c[i] + 10;
- c[i-1] = -1;
- }
- }
- if(f){
- swap(a,b);
- c[0] = 0;
- }
- return c;
- }
- int* difference(int a[], int b[]){
- bool a_sing = a[0],
- b_sing = b[0];
- int *c;
- if(a[0] == 1 && b[0] == 1){
- c = diff_plus(a, b);
- }
- else if(b[0] == 0){
- b[0] = 1;
- c = sum(a, b);
- }
- else{
- a[0] = 1;
- b[0] = 1;
- c = sum(a, b);
- c[0] = 0;
- }
- a[0] = a_sing;
- b[0] = b_sing;
- return c;
- }
- int* sum(int a[], int b[]){
- int *c = createMas();
- if(a[0] == 1 && b[0] == 1) {
- for(int i = N -1; i > 0; i--){
- c[i] = c[i] + a[i] + b[i];
- if (c[i] > 9){
- c[i-1] = 1;
- c[i] = c[i] - 10;
- }
- }
- }
- if(a[0] == 0 && b[0] == 0) {
- for(int i = N -1; i > 0; i--){
- a[0] = 1;
- b[0] = 1;
- c = sum(a, b);
- c[0] = 0;
- a[0] = 0;
- b[0] = 0;
- }
- }
- if(a[0] == 0 ^ b[0] == 0){
- bool a_sing = a[0],
- b_sing = b[0];
- a[0] = 1;
- b[0] = 1;
- if(compare(a, b) == 1){
- c = difference(a, b);
- c[0] = a_sing;
- }
- else if(compare(b, a) == 1){
- c = difference(b, a);
- c[0] = b_sing;
- }
- a[0] = a_sing;
- b[0] = b_sing;
- }
- return c;
- }
- void printMas(int a[]) {
- int i = 1;
- while (i < N && a[i] == 0)
- i++;
- if (i == N) {
- cout << "0" << endl;
- return ;
- }
- if (a[0] == 0){
- cout << "-";
- }
- while(i < N){
- cout << a[i];
- i++;
- }
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement