Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wyznaczenie położenia drugiego podciągu w pierwszym

Ostatnio zmodyfikowano 2013-03-28 18:57
Autor Wiadomość
migudka101
Temat założony przez niniejszego użytkownika
[C++] Wyznaczenie położenia drugiego podciągu w pierwszym
» 2013-03-28 00:30:39
Witam, mam napisać program w języku C:
Napisz procedurę, która dostaje dwa ciągi znaków i wyznacza połozenie drugiego podciągu w pierwszym. Niepowodzenie sygnalizowane jest wynikiem -1.


Początek programu mam:
C/C++
#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "samo to sie nie zrobi";
    char * pch;
    printf( "szukamy litery 's' w zdaniu \"%s\"...\n", str );



odnośnie dalszej czesci szukałam informacji w internecie, znalazłam takie coś:
C/C++
pch = strchr( str, 's' );
while( pch != NULL )
{
    printf( "found at %d\n", pch - str + 1 );
    pch = strchr( pch + 1, 's' );
 i nie bardzo wiem o co chodzi, program działa, jednak chciałabym dowiedzieć się co i jak, z góry dziękuję za jakąkolwiek pomoc : )
P-79509
Monika90
» 2013-03-28 08:08:12
Wygląda na to, że w zadaniu chodzi o to, by napisać włąsną wersję funkcji strstr() (z tą różnicą, że ma zwracać indeks zamiast wskaźnika). Twój program szuka wszystkich wystapien tylko jednego znaku, zamiast dowolnego ciągu znaków.

Ja bym oczekiwała czegoś takiego:
C/C++
#include <stdio.h>
#include <string.h>

int search( const char * haystack, const char * needle )
{
    //WYPELNIJ WLASNA TRESCIA!!!
    return 666;
}

int errors = 0;

void test( const char * haystack, const char * needle, int expected )
{
    int result = search( haystack, needle );
    if( result != expected )
    {
        ++errors;
        printf( "test: \"%s\", \"%s\", expected: %i, got %i\n", haystack, needle, expected, result );
    }
}

int main()
{
    test( "samo to sie nie zrobi", "s", 0 );
    test( "samo to sie nie zrobi", "nie", 12 );
    test( "samo to sie nie zrobi", "tak", - 1 );
    test( "samo to sie nie zrobi", "", 0 );
    test( "", "", 0 );
    test( "", "co", - 1 );
    test( "a kuku", "ku", 2 );
   
    if( errors )
         printf( "number of errors: %i\n", errors );
    else
         printf( "hooray, all tests passed!\n" );
   
    return errors;
}
P-79510
migudka101
Temat założony przez niniejszego użytkownika
dziękuję
» 2013-03-28 18:35:36
Dziękuje bardzo, myślę ze to właśnie o to chodzi


Jestem zielona z programowania, dopiero w tym semestrze zaczęliśmy i już projekt, więc nie do końca się orientuje
Czy mogłabyś mi jeszcze napisać kilka słów wyjaśnienia odnośnie tego fragmentu?

C/C++
void test( const char * haystack, const char * needle, int expected )
{
    int result = search( haystack, needle );
    if( result != expected )
    {
        ++errors;
        printf( "test: \"%s\", \"%s\", expected: %i, got %i\n", haystack, needle, expected, result );
    }
}

Nie bardzo rozumiem, czym są podane zwroty i co po kolei ten program mi tutaj robi, będę bardzo wdzięczna także o kontakt meilowy, << removed - problemy rozwiązujemy na forum >>  ;)
P-79557
Monika90
» 2013-03-28 18:57:28
Dziękuje bardzo, myślę ze to właśnie o to chodzi. Jestem zielona z programowania...
To nie jest gotowe rozwiązanie, to tylko program, który ma sprawdzić, czy dobrze rozwiązano. Właściwe rozwiązanie ma być w miejscu gdzie napisałam:
C/C++
//WYPELNIJ WLASNA TRESCIA!!!
I niestety, jeżeli jesteś zielona z programowania, to czeka Cię dużo pracy.

/EDIT
A jeżeli chodzi o użyte zwroty to:
search - szukaj (to nazwa funkcji, którą masz zaimplementować)
test - testuj (to nazwa funkcji która sprawdza, czy funkcja search działa prawidłowo)
haystack - stóg siana (czyli łańcuch znaków w którym szukamy)
needle - igła (czyli szukany łańcuch znaków)
result - wynik zwracany przez funkcję search
expected - wynik oczekiwany
errors - ilośc testów, których funkcji search nie udało się pomyślnie przejść
P-79560
« 1 »
  Strona 1 z 1