[Rozdział 28] Zadanie domowe
Ostatnio zmodyfikowano 2015-12-16 18:35
Unlimited Temat założony przez niniejszego użytkownika |
[Rozdział 28] Zadanie domowe » 2012-03-26 00:09:50 "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 [b] oraz [/b]. Tekst, który powstanie w wyniku przeprowadzenia wspomnianych operacji wypisz na ekran."
Czy mam to zrobić w ten sposób że najpierw usunę to co potrzeba, a potem wstawię to co trza było podmienić? Trochę nie będzie to dobre rozwiązanie bo jak później dodam kilka spacji to już całkiem co innego wyjdzie. A w tym rozdziale nie ma napisane jak usuwać takie same sąsiednie znaki. |
|
draculeq |
» 2012-03-26 00:32:48 Nie szukaj ryb jak masz wędkę z przynętą w łapie :) |
|
DejaVu |
» 2012-03-26 09:45:11 Dostałeś narzędzia do rozwiązania problemu, a nie gotowca :) Trzeba trochę podumać nad tym zadaniem :) |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-27 14:07:46 Zrobiłem sobie dzień przerwy i zabrałem się do zadania. Mam jednak błąd przy kompilacji. Otóż gdy w funkcji wywołuję inną funkcję dostaję błąd że funkcja nie jest zadeklarowana. Od kiedy się funkcję deklaruje? Kod: string konwertuj( string & tekst ) { szukaj_i_usun( tekst, " " ); return tekst; }
W końcu po mozolnych próbach spróbowałem zamienić miejscami funkcje i zadziałało... Nie wiem dlaczego nie chciało działać w innej kolejności. |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-27 17:36:52 Zadanie wykonane i podzielę się moją pracą. Może komuś się przyda aby zerkając wiedział jak to zrobić, bo tutaj z tego zadania nie ma ani jednego tematu z kodem (nikt nie potrafił zrobić? czy było to takie proste że nikt nie potrzebował pomocy?). #include <iostream> #include <string> using namespace std;
void szukaj_i_usun( string & tekst, string fraza ) { size_t znalezionaPozycja = tekst.find( fraza ); do { znalezionaPozycja = tekst.find( fraza ); if( znalezionaPozycja != string::npos ) { tekst.erase( znalezionaPozycja, 1 ); } } while( znalezionaPozycja != string::npos ); }
void szukaj_i_zamien1( string & tekst, string fraza ) { size_t znalezionaPozycja = tekst.find( fraza ); tekst.erase( znalezionaPozycja, fraza.size() ); tekst.insert( znalezionaPozycja, "[b]" ); }
void szukaj_i_zamien2( string & tekst, string fraza ) { size_t znalezionaPozycja = tekst.find( fraza ); tekst.erase( znalezionaPozycja, fraza.size() ); tekst.insert( znalezionaPozycja, "[/b]" ); }
string konwertuj( string & tekst ) { szukaj_i_usun( tekst, " " ); szukaj_i_zamien1( tekst, "<b>" ); szukaj_i_zamien2( tekst, "</b>" ); return tekst; }
int main() { string tekst = "<b>to jest </b> testowy napis :)"; cout << konwertuj( tekst ) << endl; return 0; }
|
|
Chlorek |
» 2012-03-28 17:58:57 Co do "problemu" z kolejnością funkcji. To wszystko wykonuje się rzecz jasna "po kolei", więc logiczne, że nie wiedziało o istnieniu tej funkcji. Można to jednak ominąć, ale tylko w połowie. int jakasFunkcja();
int main() { jakasFunkcja(); }
int jakasFunkcja() { return 0; }
|
|
Lich555 |
» 2015-12-16 18:35:42 W "dobrej" wersji programu jednak znalazł się mały nieistotny błąd :P void szukaj_i_zamien1 powinno być do...while tak jak jest to zrobione w void szukaj_i_usun( string & tekst, string fraza ). |
|
« 1 » |