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;
}
#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;
}
C++er