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

zadanie domowe lekcja 28

Ostatnio zmodyfikowano 2014-12-09 22:28
Autor Wiadomość
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ć:
C/C++
#include <iostream>
#include <string>

std::string konwertuj( std::string & sTekst )
{
    std::string sWynik;
    //TODO: tu należy napisać kod realizujący zadanie
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    return 0;
}

Mój kod:
C/C++
#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? ;/
P-122607
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:
» Kurs C++ » Poziom 3Wyszukiwanie frazy w tekście lekcja

... 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
P-122608
« 1 »
  Strona 1 z 1