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

rozdzial/lekcja 28, zadanie domowe

Ostatnio zmodyfikowano 2022-04-14 23:18
Autor Wiadomość
jebackoze
Temat założony przez niniejszego użytkownika
rozdzial/lekcja 28, zadanie domowe
» 2022-04-14 22:08:26
hej,
cos tam mi sie udalo pokaleczyc i finalnie dziala, ale mam poczucie, ze to nie tak mialo wygladac. szukalem na forum zeby cos porownac, siegnac wzrokiem po podpowiedzi, ale znajdujac chyba temat z rozwiazaniem mam wrazenie, ze owczesnie musiala byc jakas inna tresc zadania (lub cos dodatkowo w lekcji) bo w lekcji nie ma chociazby o resize

gdy probuje wszystko wrzucic do jednej petli z warunkiem if (warunek && warunek && warunek) to cos sie rozjezdza.

C/C++
#include <iostream>
#include <string>

std::string konwertuj( std::string sTekst )
{
   
std::string sWynik;
   
   
size_t spacja = sTekst.find( "  " );
   
size_t otwierajacy = sTekst.find( "<b>" );
   
size_t zamykajacy = sTekst.find( "</b>" );
   
if( spacja != std::string::npos )
   
{
       
do {
           
sTekst.erase( spacja, 2 );
           
sTekst.insert( spacja, " " );
           
spacja = sTekst.find( "  ", spacja );
       
} while( spacja != std::string::npos );
       
   
}
   
if( otwierajacy != std::string::npos )
   
{
       
do {
           
sTekst.erase( otwierajacy, 3 );
           
sTekst.insert( otwierajacy, "[b]" );
           
otwierajacy = sTekst.find( "<b>", otwierajacy );
       
} while( otwierajacy != std::string::npos );
       
   
}
   
if( zamykajacy != std::string::npos )
   
{
       
do {
           
sTekst.erase( zamykajacy, 4 );
           
sTekst.insert( zamykajacy, "[b]" );
           
zamykajacy = sTekst.find( "<b>", zamykajacy );
       
} while( zamykajacy != std::string::npos );
       
   
}
   
std::cout << sTekst;
   
return sWynik;
}
int main()
{
   
std::cout << konwertuj( "<b>to jest </b> testowy       napis     <b>:)" ) << std::endl;
   
std::cout << konwertuj( "  s       a         m      e         sp    a   c j    e" ) << std::endl;
   
std::cout << konwertuj( "<<B><//b><i></i>" ) << std::endl;
   
return 0;
}

nie no, na pewno cos mialo inaczej wygladac skoro pojawia sie:
C/C++
...
std::string sWynik;
...
return sWynik;
...
P-179402
nanoant20
» 2022-04-14 22:58:55
dopiero co, był poruszany ten temat
rozwiązanie tego zadania link poniżej
cpp0x.pl [Rozdział 28] Zadanie domowe

i jeszcze jedno rozwiązanie naskrobane przeze mnie z użyciem wyrażeń regularnych
C/C++
#include <iostream>
#include <cstring>
#include <regex>

using namespace std;

std::string konwertuj( std::string sTekst )
{
   
std::string sWynik;
   
   
const regex pattern1( "(<b>)" );
   
sTekst = regex_replace( sTekst, pattern1, "[b]" );
   
const regex pattern2( "(</b>)" );
   
sTekst = regex_replace( sTekst, pattern2, "[/b]" );
   
const regex pattern_spaces( "([[:space:]]{1,})" );
   
sTekst = regex_replace( sTekst, pattern_spaces, " " );
   
   
sWynik = sTekst;
   
return sWynik;
}
int main()
{
   
std::cout << konwertuj( "<b>to jest </b> testowy       napis     <b>:)" ) << std::endl;
   
std::cout << konwertuj( "  s       a         m      e         sp    a   c j    e" ) << std::endl;
   
std::cout << konwertuj( "<<B><//b><i></i>" ) << std::endl;
   
return 0;
}
P-179403
jebackoze
Temat założony przez niniejszego użytkownika
» 2022-04-14 23:18:14
ale wtopa, ze nie wpadlem na to zeby sprobowac wyszukac jeszcze rozdział 28, zafiksowalem sie na lekcja bo czesciej na tym znajduje wyniki.

w zasadzie to dla autora kursu moze to byc sygnal, ze uzycie zarowno lekcja jak i rozdzial powoduje, ze kursanci stosuja te 2 slowa zamiennie przez co wyniki wyszukania nie zawsze moga byc kompletne.
P-179404
« 1 »
  Strona 1 z 1