witam,mam do stworzenia słownik polsko -angielski i angielsko-polski za pomocą drzewa BST
mam problem z wczytywaniem pliku
oto kod:
#include <iostream>
#include <fstream>
using namespace std;
//struktura drzewa
struct wezel{
wezel *lewy;
wezel *prawy;
wezel *tlumaczenie;
string slowo;
};
//wypisanie KLP
void klp(wezel *korzen){
if(korzen==NULL){
return;
}
cout<<korzen->slowo<<" ";
cout<<korzen->tlumaczenie->slowo<<endl;
klp(korzen->lewy);
klp(korzen->prawy);
}
//szukanie w drzewie
wezel* szukaj(string napis, wezel *korzen){
while(korzen!=NULL){
if(korzen->slowo==napis){
return korzen;
}
if(napis>korzen->slowo){
korzen=korzen->prawy;
}
else{
korzen=korzen->lewy;
}
}
}
//dodanie elementu na drzewo
void dodaj_na_drzewo_ang(string napis, wezel *korzen, wezel *laczenie){
wezel *rodzic=new wezel;
while(korzen!=NULL){
if(korzen->slowo==napis){
return;
}
if(napis>korzen->slowo){
rodzic=korzen;
korzen=korzen->prawy;
}
else{
rodzic=korzen;
korzen=korzen->lewy;
}
}
if(napis>rodzic->slowo){
wezel *dodaj=new wezel;
dodaj->lewy=NULL; dodaj->prawy=NULL; dodaj->slowo=napis;
rodzic->prawy=dodaj;
// tworzenie poloczen miedzy drzewami
if(laczenie!=NULL){
dodaj->tlumaczenie=laczenie;
laczenie->tlumaczenie=dodaj;
}
}
if(napis<rodzic->slowo){
wezel *dodaj=new wezel;
dodaj->lewy=NULL; dodaj->prawy=NULL; dodaj->slowo=napis;
rodzic->lewy=dodaj;
//tworzenie poloczen miedzy drzewami
if(laczenie!=NULL){
dodaj->tlumaczenie=laczenie;
laczenie->tlumaczenie=dodaj;
}
}
}
int main()
{
//tworzenie korzenia drzewa z napisami angielskimi
wezel *drzewo_ang=new wezel;
drzewo_ang->lewy=NULL;
drzewo_ang->prawy=NULL;
// tworzenie korzenia drzewa polskiego
wezel * drzewo_polskie=new wezel;
drzewo_polskie->lewy=NULL;
drzewo_polskie->prawy=NULL;
wezel *pom2;
string buffor,buf;
ifstream we("in.txt");
we>>drzewo_ang->slowo;
while(!we.eof())
{
we>>buffor;
dodaj_na_drzewo_ang(buffor,drzewo_ang,NULL);
pom2=szukaj(buffor,drzewo_ang);
we>>drzewo_polskie->slowo;
we>>buf;
drzewo_polskie->tlumaczenie=pom2;
pom2->tlumaczenie=drzewo_polskie;
dodaj_na_drzewo_ang(buf,drzewo_polskie,pom2);
}
klp(drzewo_ang);//wypisywanie
}
plik in.txt powinien wygladać w następujacy sposób:
where jak
how jak
now teraz
wyświetla mi się jedynie pierwsza wartosć czyli (where),a nastepnie program wysypuje się ,ma ktoś pomysł co robię źle ?