Witam, mam problem z wykonaniem tego zadania.
W pliku pary.txt znajduje się 50 par dodatnich liczb całkowitych zapisanych w systemie
trójkowym – w każdym wierszu jedna para liczb rozdzielonych znakiem odstępu. Każda
z liczb ma co najwyżej 9 cyfr.
Napisz program, który dla każdej pary liczb wczytanej z pliku pary.txt, obliczy ich sumę
i wynik zapisze w systemie trójkowym w pliku wynik5.txt. Liczba w i-tym wierszu pliku
wynik5.txt powinna być sumą liczb z i-tego wiersza pliku pary.txt.
Przykład
Gdyby plik pary.txt zawierał tylko 2 pary liczb:
12 1
22 10
to plik wynik5.txt miałby postać:
20
102
Napisałem taki program, ale po uruchomieniu zawiesza się i pojawia się okienko "Program przestał działać" i się wyłącza.
#include <iostream>
#include <cmath>
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
int potega(int p,int w)
{if (w==0)
return 1;
else
return potega(p,w-1)*p;
}
int main()
{ int tab_a[20],tab_b[20],wynik[25],k,i;
int a,b,raw,aa,bb,suma,liczba,liczba2,z,u,finish;
ifstream wej("pary.txt");
wej>>a>>b;
if (a>b)liczba=a;
else liczba=b;
while(liczba!=0)
{liczba=liczba/10;
z++;}
for(k=1;k<=z;k++)
{ tab_a[k]=(a%10)*potega(3,k);
a=a/10;
tab_b[k]=(b%10)*potega(3,k);
b=b/10; }
aa=0;
for(int n=1;n<=i;n++) aa=aa+tab_a[n];
bb=0;
for(int y=1;y<=i;y++) bb=bb+tab_b[y];
suma=aa+bb;
cout<<suma<<endl;
liczba2=suma;
while(liczba2!=0)
{liczba2=liczba2/10;
u++;}
for(int y=1;y<=u;y++)
{ wynik[y]=suma%3;
suma=suma/10; }
ofstream wyj ("wynik5.txt", ios::app);
for(int r=1;r<=u;r++) cout<<wynik[r];
system("pause");
return 0;
}