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: #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ś: 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 : ) |
|
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: #include <stdio.h> #include <string.h>
int search( const char * haystack, const char * needle ) { 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; }
|
|
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? 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 >> ;) |
|
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: 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ść |
|
« 1 » |