Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Napisati funkciju koja za dva stringa vraca duzinu njihovog
- najveceg zajednickog podstringa.
- Recimo ako imamo
- string1: asdfqwertztzasf
- string2: ertzfbnasdfqwert
- Zajednicki podstringovi sa potencijalnim najvecim duzinama
- mogu biti asdf i qwert, jer su oba ova podstringa
- sadrzana u gore navedenim(unesenim stringovima)
- Funkcija u ovom slucaju treba vratiti 5, jer je duzina
- najduzeg zajednickog podstringa qwert->5 !! */
- #include <stdio.h>
- #include <stdlib.h>
- void unos(char *string,int dimenzija)
- {
- int i=0;
- do
- {
- if (i++==dimenzija) break;
- *string++=getchar();
- }
- while(*(string-1)!='\n');
- *(string-1)='\0';
- }
- int maxSubString(char *string1,char *string2)
- {
- int maxDuzina=0;
- /* Moram zapamtiti gdje mi je pocetak drugog stringa */
- char *pocetak=string2;
- /* Prolazim kroz prvi string */
- while(*string1!='\0')
- {
- /* Prolazim kroz drugi string */
- /* Kako je ova petlja unuranja, to znaci
- da dok uzmem jedan znak stringa1, proci cu kroz
- sve znakove stringa2, zato mi treba ono gore pocetak */
- while(*string2!='\0')
- {
- /* Duzina podstringa u svakoj iteraciji postavljenja na nulu */
- int duzina=0;
- /* Trebaju mi pomocni pokazivaci iz razloga sto pokazivaci
- string1 i string2, pamte ukupno od kojeg znaka poredim,
- a sa ovim pomocnim se krecem "naprijed" sve dok su znakovi isti,
- u prevodu, dok imaju jednake podstringove */
- char *pomocni1=string1,*pomocni2=string2;
- /* To upravo radi ova petlja i broji tu duzinu */
- while(*pomocni1++==*pomocni2++)
- {
- duzina++;
- /* Moramo paziti da ne gledamo znakove iza \0 */
- if (*pomocni1=='\0' || *pomocni2=='\0') break;
- }
- /* Ako je ta duzina veca od maksimalne uzimam novu vrijednost */
- if (duzina>maxDuzina) maxDuzina=duzina;
- string2++;
- }
- /* Buduci da sam nakon petlje dosao do kraja stringa2
- isti moram vratiti na pocetak, kako bi nastavio
- poredjenje od sljedeceg znaka stringa1 */
- string2=pocetak;
- string1++;
- }
- return maxDuzina;
- }
- int main()
- {
- char string1[100],string2[100];
- unos(string1,100);
- unos(string2,100);
- printf("%d",maxSubString(string1,string2));
- return 0;
- }
Add Comment
Please, Sign In to add comment