Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

zamiana programu z c++ na c

kasiula61 22 Sty 2012 20:40 1127 10
  • #1 22 Sty 2012 20:40
    kasiula61
    Poziom 7  

    witam!
    czy ktos wie jak bedzie wygladal taki program w jezyku c

    Kod: cpp
    Zaloguj się, aby zobaczyć kod



    bardzo prosze o pomoc :)

    0 10
  • #2 22 Sty 2012 22:09
    rexina
    Poziom 17  

    W C nie ma czegoś takiego jak string. Tam używa się tablic charów ( char[] ). Nie ma też cout, cin oraz takich funkcji jak substr. Trzeba to wszystko przepisać używając pętli do sprawdzania, albo (lepiej) użyć algorytmu KMP do wyszukiwania wzorca.


    BTW. jaki sens ma porównanie if(s.substr(i,j-i) == s.substr(j,j-i)) ? to to samo jakby porównać i == j, bo patrzymy po tym samym stringu s...?

    0
  • #3 22 Sty 2012 22:22
    kasiula61
    Poziom 7  

    tak wiem: string -> char, count->printf, cin->scanf. nie potrafie wlasnie sprzerobic tej funkcji substr....

    bardzo pilnie potrzebuje zeby taki algorytm skompilowal mi sie w C... ale wyskakuja mi bledy roznego typu.

    np przy generowniu lancucha.

    zasatnawiam sie czy dobrym rozwiazaniem byloby wprowadzenie to na sztywno tablicy znakow

    wtedy moze bez problmu przejdzie algorytm wyszukiwania slow podwojnych w podanym ciagu?..

    0
  • Pomocny post
    #4 22 Sty 2012 22:22
    Krzysztof Gustaw
    Poziom 23  

    Witam!
    Na początek coś takiego:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    P.S.

    Kod lepiej onawiasuj znacznikami "syntax" bo dostaniemy opeer od Moderatora. Jak to się robi, znajdziesz w poście "zasady pisania postów w dziale programowanie"

    0
  • #5 22 Sty 2012 22:44
    kasiula61
    Poziom 7  

    kompiluje, ale konsola jest pusta

    0
  • #6 22 Sty 2012 22:44
    Krzysztof Gustaw
    Poziom 23  

    Kasiula61, dokładnie tak. Musisz przydzielić odpowiednią ilość pamięci na bufor (tablicę) znakową powiększoną o conajmniej 1 np zadeklarować tablicę lub fumkcją z rodziny malloc.

    A co do wydobywania podciągów (odpowiednik substr) to podaję patent:
    Zakładamy, że gdzieś jest łańcuch str.

    Kod: c
    Zaloguj się, aby zobaczyć kod
    do substr zostanie skopiowane n znaków z pozycji "i" łańcucha str. Jednocześnie na końcu skopiowanego łańcucha
    zostanie dostawione '\0' oznaczające koniec łańcucha.

    Acha, przecież do wyszukiwania podciągów w ciągu znaków służy funkcja
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wyszukuje w ciągu str1 podciągu str2. Jaśli znaleziony, zwraca adres znalezionego podciągu
    a jak nie znajdzie, zwraca NULL.

    Pozdrawiam

    0
  • #7 22 Sty 2012 23:21
    kasiula61
    Poziom 7  

    gdy podaje mu ciag znaków, konczy program, a gdzie wyszukiwanie słów podwójnych?

    zawartosc komsoli powinna wygladac np. tak


    ABBAABBAAABAABABBBAA
    ABBAABBA
    BB
    BBAABBAA
    AA
    BB
    AA
    AA
    AABAAB
    ABAABA
    AA
    ABAB
    BB
    BB
    AA

    Dodano po 20 [minuty]:

    Dodano po 39 [sekundy]:

    Krzysztof Gustaw napisał:


    Acha, przecież do wyszukiwania podciągów w ciągu znaków służy funkcja
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wyszukuje w ciągu str1 podciągu str2. Jaśli znaleziony, zwraca adres znalezionego podciągu
    a jak nie znajdzie, zwraca NULL.



    czyli?

    0
  • Pomocny post
    #8 22 Sty 2012 23:27
    Krzysztof Gustaw
    Poziom 23  

    hmmm u mnie działa...
    Używam Pelles-C
    Na wszelki wypadek wklejam działający u mnie kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #9 22 Sty 2012 23:37
    kasiula61
    Poziom 7  

    dziala. dziekuję!

    0
  • #10 22 Sty 2012 23:38
    Krzysztof Gustaw
    Poziom 23  

    do Kasiula61 post z godz. 23:21

    Chyba można spróbować np tak (może o to chodzi...):

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #11 22 Sty 2012 23:40
    kasiula61
    Poziom 7  

    juz pieknie wyswietla :) zamykam watek i jeszcze raz thx za pomoc :) punkty rozdane :)

    0