[ belegija @ 19.04.2007. 14:32 ] @
Da li moze neko da skonta u cemu je problem? Zadatak: Napisati program koji trazi da se unese n imena, koje treba sortirati po abecednom redu. Nakon toga za novu unesenu rijec, treba provjeriti da li se nalazi u vec unesenom nizu (postupkom binarne pretrage). Ovdje je code:(Greska je u funkciji BinarnaPretraga): Code: #include<iostream> #include<cstring> bool k(char *u,char *v){ return strcmp(u,v)<0; } using namespace std; template <typename tip> bool BinarnaPretraga(tip **Niz, int N, tip *Kljuc) {int lpok=0,dpok=N-1; while(lpok<=dpok){ int sredina=(lpok+dpok)/2; if(strcmp(Niz[sredina],Kljuc)==0)return true; else if(strcmp(Niz[sredina],Kljuc)>0)lpok=sredina+1; else dpok=sredina-1; } return false; } int main() { int n1,n; cout<<"Unesi broj rijeci:"; cin>>n1; n=n1; cin.ignore(100,'\n'); const int c(n); char *reci[c+1]; try{ for(int i=0;i<=c;i++) reci[i]=0; for(int i=0;i<c;i++) { char pom[100]; cin.getline(pom,sizeof pom); reci[i]=new char[strlen(pom)+1]; strcpy(reci[i],pom); } sort(reci,reci+c,k); cout<<endl; for(int i=0;i<c;i++) cout<<reci[i]<<endl; cout<<"Unesi novu rijec:"; cin.getline(reci[c+1],sizeof reci[c+1]); bool ima=false; ima=BinarnaPretraga(reci, c+1, reci[c+1]); if(ima)cout<<"Ima."; else cout<<"Mema"; } catch(...){ cout<<"Nema memorije?"; for(int i=0;i<c;i++) delete [] reci[i]; } for(int i=0;i<c;i++) delete [] reci[i]; system("pause"); return 0; } |