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; } |
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
Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More
Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More
Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More