C - Hľadanie reťazca v reťazci

Programovacie jazyky, rady, poradňa...
wulpo
Novice
Novice
Príspevky: 3
Registrovaný: 09 dec 2011, 17:33

C - Hľadanie reťazca v reťazci

Príspevok od používateľa wulpo »

Zdravím, dostal som za ulohu spravit program, ktorý si načíta textový súbor, a najde v nom retazec, ktorý sa opakuje.
napr:
programovaniejemojimkonickomalevprogramochmamchyby
(programovanie je mojim konickom ale v programoch mam chyby)
a program ma vypísat text, ktorý sa zhoduje... v tomto prípade slovíčko "program"

neviem prečo mi to nejde... neviete dakto pomocť ? dakujem

Kód: Vybrať všetko

#include <conio.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    char ret[100];    
    char pom[100];
    FILE * vstup= fopen("data.txt","r");       
    if (vstup == NULL) 
             {
                  printf("Nepodarilo sa otvorit vstupny subor");
                  getch();
                  return 0;
             }
       
    fscanf(vstup,"%s",&ret);

    pom = strstr(ret,pom);
    if (pom != NULL)
    printf("Vystup: ANO, P=%s", pom);
    else
    printf("Vystup: NIE");

    getch();
    fclose(vstup);
}
//autoeditácia príspevku (09 Dec 2011, 19:22)
som prišiel na to, že to takto fungovať nebude, ale dako s tým neviem pohnut... niekto kto by mi vedel poradiť, / upravit zdroják ?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: C - Hľadanie reťazca v reťazci

Príspevok od používateľa harrison314 »

Z hentoho zdrojaku asi nic nebude.
Treba pouzit dynamicke programovanie
http://en.wikipedia.org/wiki/Longest_co ... on_defined
Uprav rekurzivnu definiciu pre LCS a oba vstupne retazce bude ten isty retazec, ktory nacitas zo suboru.
wulpo
Novice
Novice
Príspevky: 3
Registrovaný: 09 dec 2011, 17:33

Re: C - Hľadanie reťazca v reťazci

Príspevok od používateľa wulpo »

for (i=pocet znakov;i>=2;i--)

{
a vnutry cyklu ma testovat zhodu týchto retazcov ?
abca
abc
ab

bcab
bca
bc

cab
ca

ba

if (0=stricmp(R1,R2)) printf ("ANO");

}


podla mna tam ma byt nieco taketo, len neviem ako to vnutro cyklu napisem do programu
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: C - Hľadanie reťazca v reťazci

Príspevok od používateľa harrison314 »

velmi neviem co tymi znakmi myslis, ale pouzijes asi takuto definiciu

SS ( ako substring)
str ako vstupny retazec

SS[x][y]= 0 ak x==y
SS[x][y]= SS[x-1][y-1]+1 ak str[x]==str○1y]
SS[x][y]= 0 inak

A vsetko ostatne pouzijes ako s prikalde co som ti hodil, nazaver vyhaldas v tabulke najetsie cislo a to ouznacuje koniec a dlzku najdhsieho opakujuceho sa retazca.
wulpo
Novice
Novice
Príspevky: 3
Registrovaný: 09 dec 2011, 17:33

Re: C - Hľadanie reťazca v reťazci

Príspevok od používateľa wulpo »

už to mam, spravil som to trochu iný sposobom, ale dik za rady
Napísať odpoveď