[ ssnnaaxx @ 07.06.2006. 18:12 ] @
Ako neko kuzi oba PJ bio bih zahvalan kad bi preveo sljedeci kod iz c++ u javu ... #include<conio.h> #include <iostream.h> struct cvor{ // struktura cvor koja sadrzi znak i dva pokazivaca int Ime; cvor *sljedeci; cvor *predhodni; }; cvor *glava = NULL; cvor *rep = NULL; struct cvor *novicvor(int broj){ // pravi objekt struct cvor *nuovo = new cvor; if (nuovo == NULL) return NULL; else { nuovo->Ime = broj; return nuovo; } } void dodajnakraj(struct cvor *novi){ //dodaje na vrh if(glava == NULL) { glava = novi; rep = novi; glava->sljedeci = NULL; glava ->predhodni = NULL; } else { rep ->sljedeci = novi; novi->predhodni = rep; rep= novi; rep->sljedeci=NULL; glava->predhodni = NULL; } } void brisicvor(cvor *brisi) { // brise cvor sa vrha if (glava->sljedeci == NULL) { glava = NULL; rep = NULL; return; } struct cvor *tmp; tmp = brisi; if ( tmp == rep){ rep= rep -> predhodni; rep ->sljedeci = NULL; delete tmp; } } /* Ova fukcija provjerava ispravnost zagrada:*/ void zgrda(){ cvor *pok = rep; float lijeva = 0; /*ovo su brojaci zagrada*/ float desna = 0; float Lijeva = 0; float Desna = 0; float LIJEVA = 0; float DESNA = 0; /* kad se zagrada otvori promjeni vrijednost u true, zatvaranjem zagrade vraca vrijednost false*/ bool prvo = false; bool Prvo = false; while (pok!= NULL){ /*moramo proveravati za svaku vrstu zagrada, otvorenu i zatvorenu*/ if (pok->Ime=='(' ) { lijeva ++; if (desna==0) cout<<"\n\tMale zagrade nisu dobro napisane"; prvo=false; } if (pok->Ime== ')' ) { desna ++; if (prvo == true ) cout<<"\n\tMale zagrade nisu dobro napisane "; /*znaci da se ista zagradaponovila uzastopce ponovila*/ prvo = true; } if (pok->Ime== '[' ) { Lijeva ++; if (Desna==0) cout<<"\n\tSrednje zagrade nisu dobro napisane "; if (prvo == true ) cout <<""; } if (pok->Ime== ']' ) { Desna ++; if (prvo == true || Prvo == true ) cout <<"\n\tSrednje zagrade nisu dobro napisane "; /* znaci da mala nije zatvorena ili se ista srednja ponavlja*/ } if (pok->Ime== '{' ) { LIJEVA ++; if (DESNA==0) cout<<"\n\tVelike zagrade nisu dobro napisane "; } if (pok->Ime== '}' ) { DESNA ++; if (prvo == true || Prvo ==true ) cout <<"\n\tVelike zagrade nisu dobro napisane "; } brisicvor(pok); pok = pok->predhodni; // posto je ovo stek, uzima elemente sa kraja. } if (lijeva == desna && Lijeva == Desna && LIJEVA == DESNA) //ovo samo provjerava da li //svaka zagrada ima svoj par cout << cout <<"\n\tBroj zagrada je dobar \n\ti ispravno su napisane,osim ako\n\tnije ispisano nesto drugacije!!!!"; else cout << "\n\tBroj zagrada nije dobar!!!"; } int main () { cvor *pok; char a; cout << endl<< "Unesi alg. izraz:"<<endl<<"(Kraj izraza potvrdi sa = )\n\n"; while ( a != '=' ){ /*u prevodu: ponavljaj dok se ne unese znak jednako*/ cin >> a; pok= novicvor(a); /* poziva se funkcija koja pravi objekt (cvor) koji sadrzi znak unesen sa tipkovnice*/ dodajnakraj(pok); // onda taj cvor stavljamo na vrh steka } /* kada smo napunili stek pozivamo funciju zgrda() koja uzima elemente sa steka i provjerava da li redoslije zagrada ispravan*/ zgrda(); cout << endl; getch(); return 0; } |