Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Rozdział 28] Zadanie domowe

Ostatnio zmodyfikowano 2015-12-16 18:35
Autor Wiadomość
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.
P-53219
draculeq
» 2012-03-26 00:32:48
Nie szukaj ryb jak masz wędkę z przynętą w łapie :)
P-53220
DejaVu
» 2012-03-26 09:45:11
Dostałeś narzędzia do rozwiązania problemu, a nie gotowca :) Trzeba trochę podumać nad tym zadaniem :)
P-53223
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:
C/C++
string konwertuj( string & tekst )
{
    szukaj_i_usun( tekst, "  " ); // tutaj mi wywala błąd że "szukaj_i_usun" nie jest zadeklarowane w tej przestrzeni oryg.(error: 'szukaj_i_usun' was not declared in this scope)
    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.
P-53284
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?).

C/C++
#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;
}
P-53294
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.
C/C++
/* Sposób dodania funkcji po funkcji wywołującej */
int jakasFunkcja(); // TRZEBA TU DOPISAĆ TAKI KODZIK :)

int main()
{
    jakasFunkcja();
}

int jakasFunkcja()
{
    /* zrobCos... */
    return 0;
}
P-53371
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 ).
P-142053
« 1 »
  Strona 1 z 1