-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdodawanie.h
More file actions
94 lines (73 loc) · 2.68 KB
/
dodawanie.h
File metadata and controls
94 lines (73 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#ifndef DODAWANIE_H_INCLUDED
#define DODAWANIE_H_INCLUDED
using namespace std;
liczba odejmowanie(liczba, liczba);
// funkcja dodajšca dwa stringi
string dodaj(string liczba1, string liczba2) {
vector<long long int> suma;
string wynik;
long long int przenies = 0;
long long int dlugosc = 0;
if(liczba1.length() < liczba2.length())
dlugosc = liczba1.length();
else
dlugosc = liczba2.length();
for(long long int i=0; i<dlugosc; i++) {
suma.push_back((StrToInt(liczba1[liczba1.length()-1-i]) + StrToInt(liczba2[liczba2.length()-1-i]) + przenies) % 10);
przenies = (StrToInt(liczba1[liczba1.length()-1-i]) + StrToInt(liczba2[liczba2.length()-1-i]) + przenies) / 10;
}
while(dlugosc < liczba1.length()) {
suma.push_back((StrToInt(liczba1[liczba1.length()-dlugosc-1]) + przenies) % 10);
przenies = (StrToInt(liczba1[liczba1.length()-dlugosc-1]) + przenies) / 10;
dlugosc++;
}
while(dlugosc < liczba2.length()) {
suma.push_back((StrToInt(liczba2[liczba2.length()-dlugosc-1]) + przenies) % 10);
przenies = (StrToInt(liczba2[liczba2.length()-dlugosc-1]) + przenies) / 10;
dlugosc++;
}
if(przenies > 0) {
suma.push_back(przenies);
dlugosc++;
}
reverse(suma.begin(), suma.end());
for(long long int i=0; i<suma.size(); i++)
wynik += IntToStr(suma[i]);
return wynik;
}
// funkcja dodajšca dwie liczby typu 'liczba'
liczba dodawanie(liczba liczba1, liczba liczba2) {
liczba1 = trim(liczba1);
liczba2 = trim(liczba2);
liczba wynik;
string suma;
if(liczba1.znak == 1 && liczba2.znak == 0){
liczba1.znak = 0;
wynik = odejmowanie(liczba2, liczba1);
}
else if(liczba1.znak == 0 && liczba2.znak == 1){
liczba2.znak = 0;
wynik = odejmowanie(liczba1, liczba2);
}
else {
if (liczba1.poprzecinku.length() > liczba2.poprzecinku.length())
while(liczba1.poprzecinku.length() != liczba2.poprzecinku.length())
liczba2.poprzecinku += "0";
else
while(liczba1.poprzecinku.length() != liczba2.poprzecinku.length())
liczba1.poprzecinku += "0";
suma = dodaj(liczba1.poprzecinku, liczba2.poprzecinku);
if (suma.length() > liczba1.poprzecinku.length()) {
suma.erase(0,1);
liczba2.wartosc = dodaj(liczba2.wartosc, "1");
}
wynik.poprzecinku = suma;
wynik.wartosc = dodaj(liczba1.wartosc, liczba2.wartosc);
if(liczba1.znak == 1 && liczba2.znak == 1)
wynik.znak = 1;
else
wynik.znak = 0;
}
return trim(wynik);
}
#endif // DODAWANIE_H_INCLUDED