#include <string.h>
#include <stdio.h>
bool ASadrziB(char rijec1[], char rijec2[])
{
int nPoklapanja=0;
for(int i=0; i<strlen(rijec1);i++)
for(int j=0;j<strlen(rijec2);j++)
{
if(rijec1[i+j] == rijec2[j])
nPoklapanja++;
else //razlicita su slova
{
nPoklapanja=0;
continue; //idemo dalje
}
if(nPoklapanja==strlen(rijec2))
return true; // treba ispisati DA, izlazimo
}
return false;
}
void main()
{
char rijec1[20];
char rijec2[20];
printf("Unesi prvu rijec:");
scanf("%s",&rijec1);
printf("Unesi drugu rijec:");
scanf("%s",&rijec2);
if(ASadrziB(rijec1,rijec2))
printf("DA");
else
printf("NE");
}
Ovo bi bilo za C, tek sad vidim da ti treba C++, ne da mi se prepravljati, upotrijebi cin i cout umjesto scanf i printf i mirna bosna, mada ce ti ovo raditi jednako dobro.
Moze se jos optimizirati, ali mislim da nije ovdje bit.
Mislim da nije dobro ovo. Nemoj me uzet za riječ jer nisam pokrenia program, ali ovako "odokativno" mislim da bi bilo dobro da umjesto "continue" stavis "break" i da ce onda raditi. Jer problem je sta nisi inicijalizira nPreklapanja = 0 prilikom ulaska u drugu petlju (kada trazis odgovara li podstring stringu - tj. kreces od pocetka)
Zasto break umjesto continue: Pa čim jedno slovo ne odgovara, nema smisla tražiti dalje -> inicijaliziraj nPreklapanja = 0 i izađi iz 2. petlje.
I još jedna stvar, C je podskup C++, znaci sve sto C može, može i C++, tako da ne treba ništa prepravljati u tom pogledu. A i jedan savjet: Uvijek pokušajte koristiti printf, scanf nego cin, cout jer su cin i cout znatno sporiji nego printf i scanf.
A za one malo luđe: Meni jedna od cool optimizacija ovakvog problema je ovaj Rabin-Karp algoritam za pretraživanje podstringa u stringu