Witam,
mam do napisania kalkulator bez ograniczeń zakresu w systemie binarnym jako projekt. Jestem początkująca i nie mogę odnaleźć błędu w swoim programie.
Na początku zajęłam się dodawaniem liczb. Mam je wczytać z pliku, zsumować parami i zapisać do pliku. Sumowanie wychodzi mi tylko, gdy wczytuje dwie liczby, dla większej ich ilości sumowanie jest nieprawidłowe. Nie wiem czy problem tkwi w pętli, w zapisie do pliku, czy w czym innym.
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
int k=0;
stringstream liczby;
ifstream plik;
ofstream mojplik;
stringstream suma;
string l1, l2;
int i=0;
plik.open("mojplik2.txt");
if(plik.good()==0)
{
cout<<"Wystapil problem zwiazany z plikiem, program zostanie zamkniety\n";
getch();
return 0;
}
while(plik.eof()==0)
{
getline(plik,l1);
getline(plik,l2);
cout<<l1<<endl<<l2<<endl;
k++;
}
for(int j=0;j<k;j++)
{
for(int i = l1.size()-1; i >= 0; i--)
{
liczby << l1[i];
}
l1 = liczby.str();
liczby.str("");
for(int i = l2.size()-1; i >= 0; i--)
liczby << l2[i];
l2 = liczby.str();
liczby.str("");
int max;
if(l1.size()>=l2.size())
max=l1.size();
else max=l2.size();
int podsuma, dod = 0;
for(int i = 0; i < max; i++)
{
if(l1.size() > i && l2.size() > i)
podsuma = (char)l1[i]-48 + (char)l2[i]-48;
else{
if (l1.size() > l2.size())
podsuma=(char)l1[i]-48;
else
podsuma=(char)l2[i]-48;
}
podsuma=podsuma+dod;
if(podsuma > 1)
{
dod = 1;
suma<<podsuma%2;
}
else{
suma << podsuma;
dod = 0;
}
}
cout<<endl;
if(dod==1)
suma << dod;
}
string wynik;
wynik = suma.str();
cout<<"wynik"<<endl;
mojplik.open("abc.txt");
for(int j=0;j<k;j++)
{
for(int i = wynik.size()-1; i >= 0; i--)
{
mojplik << wynik[i];
cout<<wynik[i];
}
cout<<endl;
}
mojplik.close();
system("pause");
return 0;
}
Bardzo proszę o pomoc. Sama już nie mam pomysłu, co tu zmienić.