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;
}