raVVal Opublikowano 14 Kwietnia 2012 Autor Udostępnij Opublikowano 14 Kwietnia 2012 Poprawiłem to, ale nie zamienia wcale wyrazu ja już nie wiem co z tym jest nie tak! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 std::string * I = new std::string[(code.size())/2]; std::string * II = new std::string[(code.size())/2]; To nie jest przypadkiem alokacja tablicy stringów (a nie samego stringa)? Bo jeżeli tak to normalne, że: I[i] = code[i]; nie będzie działać, skoro I[] ma typ std::string, a code[] char. Druga sprawa to co Will powiedział, referencje w argumentach. Trzecia: for (unsigned int i = 0; i <= code.size()/2; i += 2) Oznacza skacz co dwa znaki do momentu aż osiągniesz połowę długości stringa. Czyli w stringach I i II znajdzie się ćwierć tekstu głównego. Chyba nie o to chodziło. Wg mnie musisz zmienić warunek na i < code.size(). Cztery: str.resize(code.size()/2); powinno przyśpieszyć działanie. W końcu klasa stringa wie ile tego będzie. Pięć: Tak jak Will powiedział, zmień w warunkach pętli <= na <, bo wychodzisz poza wielkość tablicy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 14 Kwietnia 2012 Autor Udostępnij Opublikowano 14 Kwietnia 2012 #include <string> const std::string GDstd = "GADERYPOLUKIÓŁgaderypolukiół"; std::string translateLC(std::string* a, std::string* code); std::string translateLC(std::string a, std::string code) { // Przygotowanie klucza. std::string bufor; std::string * I = new std::string[(code.size())/2]; std::string * II = new std::string[(code.size())/2]; for (unsigned int i = 0; i < code.size()/2; i += 2) { I[i] = code[i]; II[i+1] = code[i+1]; } // Zamiana znak po znaku. for (unsigned int i=0; i < a.size(); i+=1) { bufor = a[i]; for (unsigned int l=0; l < code.size()/2; l+=1) { if (bufor == I[l]) { a.erase(l, 1); a.insert(l, II[l]); } else if (bufor == II[l]) { a.erase(l, 1); a.insert(l, I[l]); } } } delete [] I; delete [] II; return a; } tak wygląda teraz biblioteka, nie pojawiają się żadne błędy, ale nie tłumaczy tekstu kiedy wpisałbym: "Rafał" powinno wyjść "Rgfgó" a tak się nie dzieje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 14 Kwietnia 2012 Autor Udostępnij Opublikowano 14 Kwietnia 2012 Rzeczywiście powinno być bez na 2, ale wtedy wywala błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 std::string translateLC(std::string a, std::string code) { // Przygotowanie klucza. std::string bufor; std::string * I = new std::string[(code.size())/2]; std::string * II = new std::string[(code.size())/2]; for (unsigned int i = 0; i < code.size(); i += 2) { I[i] = code[i]; II[i+1] = code[i+1]; } // Zamiana znak po znaku. for (unsigned int i=0; i < a.size(); i+=1) { bufor = a[i]; for (unsigned int l=0; l < code.size(); l+=1) { if (bufor == I[l]) { a.erase(l, 1); a.insert(l, II[l]); } else if (bufor == II[l]) { a.erase(l, 1); a.insert(l, I[l]); } } } delete [] I; delete [] II; return a; } Wprowadź to o co byłeś proszony, dalej masz stringi na stercie, a potem przeanalizuj swój kod. edit: Poza tym włącz debugger i przeleć dokładnie a na pewno znajdziesz co jest nie tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 14 Kwietnia 2012 Autor Udostępnij Opublikowano 14 Kwietnia 2012 Dziękuję wszystkim za pomoc, ale ja się poddaję. Wezmę się za coś prostszego a przedewszystkim za naukę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 Jeśli chodzi o naukę, to gorąco polecam megatutorial Karola Kuczmarskiego "Kurs C++ Od Zera Do Gier Kodera" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 No to szybko się poddajesz, ile czasu spędziłeś nad tym kodem? Ile godzin myślałeś gdzie tu jest błąd (a ile zanim napisałeś o nim na forum). Programistą nie zostajesz, jeśli tylko nauczysz się składni jakiegoś języka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 14 Kwietnia 2012 Autor Udostępnij Opublikowano 14 Kwietnia 2012 Megatutorial - dzięki niemu zacząłem programować. Zastanawiać się...? Z moimi umiejętnościami może w ogóle nie zauważę błędu. Może kiedyś powiem "aaaaaaaa" to tu był błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 Cóż, ja tak mam prawie z każdym poważniejszym błędem. Tylko trzeba jednak go szukać i siedzieć nad nim (albo obok niego :P ). A tak wogóle: błędy zostały już wymienione, wystarczy je naprawić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 14 Kwietnia 2012 Udostępnij Opublikowano 14 Kwietnia 2012 A zazwyczaj ten "poważny" błąd to jakaś literówka w nazwie zmiennej lub działaniu którą szuka się godzinami^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 16 Kwietnia 2012 Udostępnij Opublikowano 16 Kwietnia 2012 Ja zawsze "wcielam się" w zmienną. Wtedy łatwo znaleść błąd, bo wiesz jaką wartość ma zmienna w danym momencie i widzisz co nie gra. #991 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 16 Kwietnia 2012 Udostępnij Opublikowano 16 Kwietnia 2012 A ja używam debuggera. Sorry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się