Algorytm dodawania zrealizowany w C++. Wartości do dodawania przechowywane są w plikach tekstowych. Wynik wyświetlany na ekranie.
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 | #include <iostream> #include <fstream> #include <stdlib.h> #include <string.h> using namespace std; int getSize(ifstream&); int main(){ ifstream a,b; a.open( "a.txt" );//otwieram plik z 1 liczba b.open( "b.txt" );//otwieram plik z 2 liczba int a_size = getSize(a)-1; //ucinam dlugosc o 1 (indeksacja od 0) int b_size = getSize(b)-1; //jw int max = a_size; if(max<b_size) max= b_size; //wybralem dluzsza char* aa = new char[a_size+1]; char* bb = new char[b_size+1];//alokuje pamiec aa[0]='\0'; bb[0]='\0'; a.read(aa, a_size+1);//czytam pliki b.read(bb, b_size+1); char* wynik = new char[max+2];//alokacja pamieci dla wynik wynik[0]='\0'; int prop=0;//flaga propagacji while(max+1){ if(a_size<0){//jesli jedna z liczb jest krotsza od drugiej wynik[max]=bb[b_size]; max--; b_size--; continue; } if(b_size < 0){//jw wynik[max]=aa[a_size]; max--; a_size--; continue; } if((aa[a_size]-'0')+(bb[b_size]-'0')+prop>9)//jesli bedzie propagacja { if(prop)//jesli byla z poprzedniej operacji wynik[max] = ((aa[a_size]-'0')+(bb[b_size]-'0'+1)-10)+'0'; else//jesli nie wynik[max] = ((aa[a_size]-'0')+(bb[b_size]-'0')-10)+'0'; } else//jeslinie bedzie propagacji { if(prop)//jesli byla z poprzedniej operacji wynik[max] = ((aa[a_size]-'0')+(bb[b_size]-'0'+1)+'0'); else//jesli nie wynik[max] = ((aa[a_size]-'0')+(bb[b_size]-'0')+'0'); } if((aa[a_size]-'0')+(bb[b_size]-'0')+prop>9)//jesli jest propagacja w tym kroku to ja ustawiam prop=1; else prop=0; a_size--;//zmiejszam, czyli przechodze do kolejnej cyfry b_size--; max--; if((max==0) and prop==1){//obsluga przeniesienia jesli jest na najstaszej pozycji wynik[max] ='0'+1; } if((max==0) and prop==0){ wynik[max] =32; } } cout<<aa<<" + "<<bb<<" = "<<wynik<<endl;//pokazuje wynik delete [] wynik; delete [] aa; delete [] bb;//zwalniam pamiec return 0; } int getSize(ifstream& a){ a.seekg (0, ios::beg); int begin = a.tellg(); a.seekg (0, ios::end); int end = a.tellg(); int size = end-begin-1; a.seekg (0, ios::beg); return size; } |
Cześć. Dziś luźny artykuł, bo dziś pobawimy się jedną z pierwszy wersji Pythona. Skompilujemy go i zobaczymy co tam w… Read More
Nowy rok czas zacząć! Więc lećmy z podsumowaniem. Nowy artykuł Nie uwierzycie, ale pojawił się na blogu nowy artykuł! Piszę… Read More
Cześć! W Pythonie 3.13 dodano JITa! JIT, czyli just-in-time compiler to optymalizacja na która Python naprawdę długo czekał. Na nasze… Read More
Cześć! Zapraszam na podsumowanie roku 2024. Książki W sumie rok 2024 był pod względem ilości książek nieco podobny do roku… Read More
Podtrzymując tradycję, prawie regularnych podsumowań, zapraszam na wpis! Nie mogło obyć się bez Karkonoszy We wrześniu odwiedziłem z kolegą Karkonosze,… Read More
Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More