[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 »  |