zadanie domowe lekcja 28
Ostatnio zmodyfikowano 2014-12-09 22:28
dafuck17 Temat założony przez niniejszego użytkownika |
zadanie domowe lekcja 28 » 2014-12-09 22:12:38 Treść zadania: Napisz program, który z podanego łańcucha znaków usunie powtarzające się spacje występujące obok siebie i zastąpi znaczniki <b> oraz </b> znacznikami oraz . Tekst, który powstanie w wyniku przeprowadzenia wspomnianych operacji wypisz na ekran. Przykładowy fragment aplikacji, który możesz wykorzystać: #include <iostream> #include <string>
std::string konwertuj( std::string & sTekst ) { std::string sWynik; return sWynik; } int main() { std::string tekst = "<b>to jest </b> testowy napis :)"; std::cout << konwertuj( tekst ) << std::endl; return 0; } Mój kod: #include <iostream> #include <string> using namespace std; std::string konwertuj( std::string & sTekst ) { std::string sWynik; sTekst.erase( 0, 1 ); sTekst.erase( 1, 1 ); sTekst.insert( 0, "[" ); sTekst.insert( 2, "]" ); sTekst.erase( 11, 1 ); sTekst.erase( 13, 1 ); sTekst.insert( 11, "[" ); sTekst.insert( 14, "]" ); sTekst.erase( 23, 7 ); sTekst.erase( 36, 5 ); sWynik.insert( 0, sTekst ); return sWynik; } int main() { std::string tekst = "<b>to jest </b> testowy napis :)"; std::cout << konwertuj( tekst ) << std::endl; return 0; }
Problem mam z linijką sTekst.erase( 36, 5 ); . Mimo, iż napisałem tą komendę to dalej jest przerwa w tym miejscu "napis :)" W czym jest problem? ;/ |
|
Rashmistrz |
» 2014-12-09 22:28:53 Twój program jest tylko pod ten jeden ciąg znaków, a ma wykonywać te same zadania dla rożnych. Zadaniem twojego programu jest: -usunięcie nadmiernych spacji -zamienienie znaczników "<b>", "</b>" na "[b]", "[/b]" Wspomóż się tym rozdziałem: Wyszukiwanie frazy w tekście... i pamiętaj że usunięcie znaku z ciągu znaków skraca jego długość. TZN. jak usuniesz jedną spację to nie musisz inkrementować zmiennej od "usuwarki", bo usunięcie spacji da efekt przesunięcia tak jak powiedziałem wcześniej. //EDIT: Nie zrób takiego babola, że "wymazujesz" nawias i nowy "wstawiasz"... ,bo to tylko nie potrzebne przesuwanie znaków w tą i we w tą w pamięci. Lepiej zmienić znak za pomocą przypisania: sWynik[ pozycja ] = lewy_nawias ? '[': ']'; Oczywiście nie musisz do tego używać operatora warunkowego. :P |
|
« 1 » |