symfonia standard ćw XXIII str 218
Ostatnio zmodyfikowano 2013-06-05 18:32
NHFL Temat założony przez niniejszego użytkownika |
symfonia standard ćw XXIII str 218 » 2013-05-05 22:59:10 napisz funkcje ktora do końca stringu bedącego w jednej tablicy dołączy string bedący w drugiej tablicy funkcja powinna przerwać dołączanie stringu w przypadku zapełnienia całej tablicy mam pytanie skąd się biorą te śmieci na końcu tab1 bo kompilacji dodam ze gdy "rozmiar" jest większy np 100 to wszystkie literki sie mieszczą w tab1 i nie występuje ten problem #include <iostream> #include <conio.h>
using namespace std; void dodaniestringa( char tab1[], char tab2[], const int rozmiar ) { for( int x = 0; x <= rozmiar; x++ ) { if( tab1[ x ] == 0 ) { static int y = 0; tab1[ x ] = tab2[ y ]; y++; } } } int main() { const int rozmiar = 25; char tab1[ rozmiar ] = { "Mam na imie Marcin " }; char tab2[] = { "i lubie programowac" }; dodaniestringa( tab1, tab2, rozmiar ); cout << tab1; getch(); }
|
|
DejaVu |
» 2013-05-05 23:22:29 1. Ostatni znak w łańcuchu znaków powinien mieć wartość = 0. 2. Wywal to słowo kluczowe 'static', bo Ci ono kuku zrobi jak dwa razy wywołasz swoją funkcję. 3. Wychodzisz poza zakres tablicy :) 4. Ten algorytm jest błędny. Błędy w linijkach: for( int x = 0; x <= rozmiar; x++ ) { if( tab1[ x ] == 0 ) { static int y = 0; tab1[ x ] = tab2[ y ]; y++; } }
Poprawa błędnych linijek nic nie da - w zasadzie musisz napisać kod funkcji od nowa... |
|
NHFL Temat założony przez niniejszego użytkownika |
» 2013-05-06 14:21:21 nieco zmodyfikowalem kod teraz pewnie jest wszystko dobrze te śmieci to wynik braku NULL'a na końcu tak jak napisałeś int y = 0; for( int x = 0; x < rozmiar - 1; x++ )
{ if( tab1[ x ] == 0 ) { tab1[ x ] = tab2[ y++ ]; } }
tylko nie rozumiem dlaczego zaznaczyles mi w tej linijce if( tab1[ x ] == 0 ) błąd przecież gdy tablica nie jest zapełniona wartościami to pozostałe jej elementy są inicjalizowane zerami ja to wykorzystałem |
|
DejaVu |
» 2013-05-29 22:29:51 Nadal masz błędy w algorytmie - zrób proste wywołania funkcji, którą piszesz i sprawdzaj czy wyniki zwraca Ci poprawne. |
|
NHFL Temat założony przez niniejszego użytkownika |
» 2013-05-30 16:40:09 po miesiącu odpisałeś ale to nic nie szkodzi ;) teraz moge wywoływać funkcję tyle razy ile dusza zapragnie int y = 0; for( int x = 0; x < rozmiar - 1; x++ ) / { if( tab1[ x ] == 0 ) { if( tab1[ x ] == tab2[ y ] ) break; tab1[ x ] = tab2[ y++ ]; } }
|
|
DejaVu |
» 2013-05-30 17:02:47 Ale kod jest nadal błędny :P |
|
NHFL Temat założony przez niniejszego użytkownika |
» 2013-05-30 20:13:38 dlaczego? teraz o ile zwiększe rozmiar tablicy pierwszej to moge wywolywać tą funkcję ile razy zechce i za każdym razem dopisze mi poprawnie tekst do tej tablicy pierwszej z innych tablic |
|
DejaVu |
» 2013-06-03 14:57:47 Pętla nie przechodzi po wszystkich znakach. |
|
« 1 » 2 |