Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Trazenje podstringa
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
bimar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (14:45:25)
Postovi: (61)16
Sarma = la pohva - posuda
11 = 11 - 0
Lokacija: arkadija

PostPostano: 16:13 ned, 3. 5. 2009    Naslov: Trazenje podstringa Citirajte i odgovorite

trebam napisati funkciju koja prima 2 stringa (string i podstring) te vraća mjesto u stringu (većem) gdje počinje podstring

primjer: učitamo s1=danas je sunčan dan
s2=sunčan

funkcija treba vratiti 9....jer je sunčan počinje na 9. mjestu u s1......


[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int stringulja( char s1[], char s2[]){
int i,j, istina=0,rezultat;

for (i=0; i<=strlen(s1); i++)
if (s1[i]==s2[0])
{istina=1; rezultat=i;
{ for (j=0; j<=strlen(s2);j++)
if (s1[i+j]!=s2[j]) istina=0;}}
return rezultat;}



int main(void)
{ char s1[10], s2[10];
printf("upisite string");
scanf("%[^\n]", s1);
printf("upisite podstring");
scanf("%[^\n]", s2);
printf(" mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je %d", stringulja(s1,s2));

scanf("%%");

return 0;
}


[/code:1]

evo moga rješenja, koje se ruši odmah... bio bih jako zahvalan za nekakvu pomoć....
fala :D
trebam napisati funkciju koja prima 2 stringa (string i podstring) te vraća mjesto u stringu (većem) gdje počinje podstring

primjer: učitamo s1=danas je sunčan dan
s2=sunčan

funkcija treba vratiti 9....jer je sunčan počinje na 9. mjestu u s1......


Kod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int stringulja( char s1[], char s2[]){
int i,j, istina=0,rezultat;

   for (i=0; i<=strlen(s1); i++)
      if (s1[i]==s2[0])
         {istina=1; rezultat=i;
            { for (j=0; j<=strlen(s2);j++)
               if (s1[i+j]!=s2[j]) istina=0;}}
return rezultat;}



int main(void)
   { char s1[10], s2[10];
       printf("upisite string");
       scanf("%[^\n]", s1);
       printf("upisite podstring");
       scanf("%[^\n]", s2);
          printf(" mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je %d", stringulja(s1,s2));
          
    scanf("%%");
    
return 0;
}

         


evo moga rješenja, koje se ruši odmah... bio bih jako zahvalan za nekakvu pomoć....
fala Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 16:28 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

Kad vec koristis [tt]string.h[/tt], pomozi si s funkcijama
[code:1]#include <string.h>
char *strstr(const char *haystack, const char *needle);
char *strcasestr(const char *haystack, const char *needle);[/code:1]
(zadnja ne radi u M$ovim compilerima; oni imaju neku nestandardu, ne znam napamet koju, no mislim da pise u mojoj skripti)

Dakle,
[code:1]p = strstr(s, "nesto");
printf("Pozicija je %d.\n", p - s);[/code:1]

8)

Inace, obje petlja funkcije [tt]stringulja()[/tt] idu predaleko, te ne koristis nigdje vrijednost varijable [tt]istina[/tt] (sto bi trebalo iskoristiti). ;)

Ako treba vise infoa, samo pitaj. 8)
Kad vec koristis string.h, pomozi si s funkcijama
Kod:
#include <string.h>
char *strstr(const char *haystack, const char *needle);
char *strcasestr(const char *haystack, const char *needle);

(zadnja ne radi u M$ovim compilerima; oni imaju neku nestandardu, ne znam napamet koju, no mislim da pise u mojoj skripti)

Dakle,
Kod:
p = strstr(s, "nesto");
printf("Pozicija je %d.\n", p - s);


Cool

Inace, obje petlja funkcije stringulja() idu predaleko, te ne koristis nigdje vrijednost varijable istina (sto bi trebalo iskoristiti). Wink

Ako treba vise infoa, samo pitaj. Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
bimar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (14:45:25)
Postovi: (61)16
Sarma = la pohva - posuda
11 = 11 - 0
Lokacija: arkadija

PostPostano: 16:43 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

ma znao sam da nešto postoji...ali ono, fora je baš u tom implementiranju 8)
e vidiš...istina za istinu :P
ma popravio sam to i dao return 0, i malo promijenio način učitavanja stringa i radi...


ali nisam mijenjao uvjete u petljama..... stvarno idu predaleko ili? jer čini mi se da ovako šljaka!!! ?
ma znao sam da nešto postoji...ali ono, fora je baš u tom implementiranju Cool
e vidiš...istina za istinu Razz
ma popravio sam to i dao return 0, i malo promijenio način učitavanja stringa i radi...


ali nisam mijenjao uvjete u petljama..... stvarno idu predaleko ili? jer čini mi se da ovako šljaka!!! ?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 17:26 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

Zakelji aktualnu verziju, pa ti provjerim. :)
Zakelji aktualnu verziju, pa ti provjerim. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
bimar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (14:45:25)
Postovi: (61)16
Sarma = la pohva - posuda
11 = 11 - 0
Lokacija: arkadija

PostPostano: 17:31 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int stringulja( char s1[], char s2[]){
int i,j, istina=0,rezultat;

for (i=0; i<=strlen(s1)-1; i++)
if (s1[i]==s2[0])
{istina=1; rezultat=i;
{ for (j=0; j<=strlen(s2)-1;j++)
if (s1[i+j]!=s2[j]) istina=0;}}
if (istina) return rezultat;
return -1;}



int main(void)
{ char s1[10], s2[10];
printf("upisite string i podstring");
scanf("%[^\n] ", s1);
scanf("%[^\n]", s2);
if (stringulja(s1,s2)==-1) printf("podstring se ne pojavljuje u stringu"); else
printf(" \n mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je %d", stringulja(s1,s2));

scanf("%%");

return 0;
}



[/code:1]


hvala :D
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int stringulja( char s1[], char s2[]){
int i,j, istina=0,rezultat;

   for (i=0; i<=strlen(s1)-1; i++)
      if (s1[i]==s2[0])
         {istina=1; rezultat=i;
            { for (j=0; j<=strlen(s2)-1;j++)
               if (s1[i+j]!=s2[j]) istina=0;}}
if (istina) return rezultat;
return -1;}



int main(void)
   { char s1[10], s2[10];
       printf("upisite string i podstring");
       scanf("%[^\n] ", s1);
       scanf("%[^\n]", s2);
       if (stringulja(s1,s2)==-1) printf("podstring se ne pojavljuje u stringu"); else
             printf(" \n mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je %d", stringulja(s1,s2));
          
    scanf("%%");
    
return 0;
}

   




hvala Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 17:52 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

Jednostavna situacija:
[tt]s1 = "aba"; s2 = "abcdefghi";[/tt]
U vanjskoj petlji [tt]i[/tt] ide od 0 do 2; kad na to dodas [tt]j[/tt] koji ide od 0 do 8, dobijes u [tt]s1[i+j][/tt] da gledas element [tt]s1[10][/tt] (u zadnjem koraku), sto ne pripada nizu (stringu) [tt]s1[/tt]!. :ccc:

Kad se to ispravi, ako uneses stringove "[tt]xabyabz[/tt]" i "[tt]ab[/tt]", dobit ces poruku
[tt]mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je 4[/tt],
sto nije prvo mjesto podstringa (kako bih ocekivao od ovakve funkcije). :?

Jos gore, ako uneses stringove "[tt]xabyaba[/tt]" i "[tt]ab[/tt]", dobit ces poruku
[tt]podstring se ne pojavljuje u stringu[/tt], :shock:
jer ces abog ovog zadnjeg "[tt]a[/tt]" resetirati flag [tt]istina[/tt] iako si vec nasao podstring. :ccc:

Uputa: onaj [tt]if()[/tt] s [tt]return[/tt]-om mora ici u vanjsku petlju, a ne izvan nje. 8) Uvjet druge petlje se lako sredi da ne ide predaleko. ;) Vanjska petlja je sada ok (prije nije imala onaj "[tt]-1[/tt]"). 8)

Ne dajem ti konacno rjesenje, jer to mozes negdje i sam naci ([b]mazda[/b] cak u nekom nastavnom materijalu i/ili starom ispitu/kolokviju na Prog 2); preferiram hintove, da covjek sam skuzi. ;)
Jednostavna situacija:
s1 = "aba"; s2 = "abcdefghi";
U vanjskoj petlji i ide od 0 do 2; kad na to dodas j koji ide od 0 do 8, dobijes u s1[i+j] da gledas element s1[10] (u zadnjem koraku), sto ne pripada nizu (stringu) s1!. Ccc.... Sram te bilo...

Kad se to ispravi, ako uneses stringove "xabyabz" i "ab", dobit ces poruku
mjesto u stringu s1 gdje se pojavljuje(pocinje) string s2 je 4,
sto nije prvo mjesto podstringa (kako bih ocekivao od ovakve funkcije). Confused

Jos gore, ako uneses stringove "xabyaba" i "ab", dobit ces poruku
podstring se ne pojavljuje u stringu, Shocked
jer ces abog ovog zadnjeg "a" resetirati flag istina iako si vec nasao podstring. Ccc.... Sram te bilo...

Uputa: onaj if() s return-om mora ici u vanjsku petlju, a ne izvan nje. Cool Uvjet druge petlje se lako sredi da ne ide predaleko. Wink Vanjska petlja je sada ok (prije nije imala onaj "-1"). Cool

Ne dajem ti konacno rjesenje, jer to mozes negdje i sam naci (mazda cak u nekom nastavnom materijalu i/ili starom ispitu/kolokviju na Prog 2); preferiram hintove, da covjek sam skuzi. Wink



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
bimar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 11. 2008. (14:45:25)
Postovi: (61)16
Sarma = la pohva - posuda
11 = 11 - 0
Lokacija: arkadija

PostPostano: 18:24 ned, 3. 5. 2009    Naslov: Citirajte i odgovorite

fala šego...sad sam popravio sve...



[quote="vsego"]Jednostavna situacija:


Ne dajem ti konacno rjesenje, jer to mozes negdje i sam naci ([b]mazda[/b] cak u nekom nastavnom materijalu i/ili starom ispitu/kolokviju na Prog 2); preferiram hintove, da covjek sam skuzi. ;)[/quote]

ma je...ma bolje je tako..dok bi našo konačno rješenje već isprogramiram par puta....a i usput neš naučim....
fala šego...sad sam popravio sve...



vsego (napisa):
Jednostavna situacija:


Ne dajem ti konacno rjesenje, jer to mozes negdje i sam naci (mazda cak u nekom nastavnom materijalu i/ili starom ispitu/kolokviju na Prog 2); preferiram hintove, da covjek sam skuzi. Wink


ma je...ma bolje je tako..dok bi našo konačno rješenje već isprogramiram par puta....a i usput neš naučim....


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan