• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Modyfikacja tekstu problem z zadaniem

VPS Starter Arubacloud
0 głosów
112 wizyt
pytanie zadane 23 marca 2017 w C i C++ przez Aleksander Początkujący (360 p.)

Witam,

program ma usuwać wszystkie niepotrzebne spacje i zamieniać znaki z '<''>' na '['']'

problem polega na tym ze opisany punkt pierwszy wykonuje sie tylko 4 razy i nie usuwa wszystkich niepotrzebnych spacji.

#include <iostream>
#include <string>
using namespace std;
string konwertuj( string & stekst )
{
    bool spr1=false,spr2=false,spr3=false;
    size_t znaleziona=0;
    string sWynik;
    do{
        //pierwszy punkt
    if(stekst.find("  ")!=std::string::npos)
    {

        znaleziona=stekst.find("  ");
        cout<<"1."<<znaleziona<<endl;
        stekst.erase(znaleziona,1);
    }
    else
        {spr1=true;}
        //drugi punkt
    if(stekst.find('<')!=std::string::npos)
    {
      znaleziona=stekst.find('<');
      cout<<"2."<<znaleziona<<endl;
      stekst.erase(znaleziona,1);
      stekst.insert(znaleziona,"[");
    }
    else
        {spr2=true;}
        //trzeci punkt
    if(stekst.find(">")!=std::string::npos)
    {
        znaleziona=stekst.find('>');
        cout<<"3."<<znaleziona<<endl;
      stekst.erase(znaleziona,1);
      stekst.insert(znaleziona,"]");
    }
    else
        {spr3=true;}
    }while (spr1==false&&spr2==false&&spr3==false);
sWynik=stekst;
    return sWynik;
}
int main()
{
    string tekst = "<b>to jest </b> testowy         napis      <b>:)";
    cout << konwertuj( tekst ) << endl;
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 23 marca 2017 przez 10kw10 Pasjonat (22,880 p.)
}while (spr1==false&&spr2==false&&spr3==false);

Raczej || ;)

0 głosów
odpowiedź 24 marca 2017 przez mokrowski Mędrzec (156,260 p.)
edycja 24 marca 2017 przez mokrowski

A w imię czego się tak nad sobą znęcasz? Możesz użyć kilku algorytmów aby to łatwo rozwiązać.

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

// Zmiana znaków < i >
string& zamienTagi(string& stekst) {
    transform(stekst.begin(), stekst.end(), stekst.begin(),
        [](char c) {
            c = (c == '<' ? '[': c);
            c = (c == '>' ? ']': c);
            return c;
    });
    return stekst;
}

// Usunięcie nadmiarowych spacji..
string& usunSpacje(string& stekst) {
    stekst.erase(unique(stekst.begin(), stekst.end(),
        [](char a, char b) {
            return (a == b) && (a == ' ');
    }), stekst.end());

    return stekst;
}

// I cała konwersja..
string& konwertuj(string& stekst )
{
    return usunSpacje(zamienTagi(stekst));
}

int main()
{
    string tekst = "<b>to jest </b> testowy         napis      <b>:)";
    cout << konwertuj( tekst ) << endl;
}

PS. Nawet jeśli nie cały kod jest dla Ciebie zrozumiały, poczytaj o użytych algorytmach transform i unique. One bardzo ułatwiają programowanie.

Podobne pytania

0 głosów
1 odpowiedź 12,360 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez Elmejs Nowicjusz (190 p.)
0 głosów
1 odpowiedź 116 wizyt
0 głosów
0 odpowiedzi 91 wizyt
pytanie zadane 27 grudnia 2021 w Systemy operacyjne, programy przez Niepokonana7999 Bywalec (2,310 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...