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

[Rozdział 28] Zadanie domowe

Ostatnio zmodyfikowano 2022-02-11 12:50
Autor Wiadomość
Venithas
Temat założony przez niniejszego użytkownika
[Rozdział 28] Zadanie domowe
» 2022-02-11 04:29:59
Cześć, stwierdziłem że nic już więcej chyba nie wymyślę więc przychodzę do was z prośbą o pomoc.
Wiem że tematy tego typu już są, ale niestety zauważyłem że treść zadania się zmieniła na przestrzeni lat i według mnie jest teraz bardziej wymagające.
Moje sposoby zazwyczaj działały do momentu gdy program chciał kompilować ostatnie zdanie zadania:

C/C++
"std::cout << konwertuj( " << B > < //b><i></i>" ) << std::endl;"

W momencie gdy miałem tą linię objętą komentarzem to wszystko było ok, ale w momencie odkomentowania program wykrzaczał, po wielu godzinach kombinowania na wszelakie sposoby skończyłem z czymś co działa, lecz mam wątpliwości co do jednej rzeczy.

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

std::string konwertuj( std::string sTekst )
{
   
std::string sWynik;
   
size_t znajdz3 = sTekst.find( "  " );
   
size_t znajdz2 = sTekst.find( "</b>" );
   
size_t znajdz = sTekst.find( "<b>" );
   
   
if( znajdz != std::string::npos )
   
{
       
for( size_t i = 0; i < 2; i++ )
       
{
           
           
znajdz = sTekst.find( "<b>" );
           
sTekst.erase( znajdz, 3 );
           
sTekst.insert( znajdz, "[b]" );
       
}
       
       
znajdz2 = sTekst.find( "</b>" );
       
sTekst.erase( znajdz2, 4 );
       
sTekst.insert( znajdz2, "[/b]" );
   
}
   
   
   
   
do
   
{ znajdz3 = sTekst.find( "  " );
       
       
if( znajdz3 < 1000 )
       
{
           
sTekst.erase( znajdz3, 1 );
       
}
    }
while( znajdz3 != std::string::npos );
   
   
   
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;
}

Często gdy mam błąd to wywołuje obiekty by zobaczyć ich wartość, i doszedłem do wniosku że przy usuwaniu zbędnych odstępów wstawię funkcje "if", ponieważ bez tej funkcji w pewnym momencie osiąga kosmiczne wartości i powoduję błąd, jest ktoś w stanie wytłumaczyć mi dlaczego tak się dzieję lub wytknąć mi błąd który zrobiłem i go nie widzę.

P-179288
nanoant20
» 2022-02-11 10:59:18
przekombinowane
a to
if( znajdz3 < 1000 )

to jest w ogóle niezrozumiałe

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

using namespace std;

std::string konwertuj( std::string sTekst )
{
   
std::string sWynik;
   
string str1 = "<b>";
   
string str2 = "</b>";
   
   
for( unsigned i = 0; i < sTekst.length(); ++i )
   
{
       
       
size_t found1 = sTekst.find( str1 );
       
if( found1 != string::npos )
       
{
           
sTekst.erase( found1, str1.size() );
           
sTekst.insert( found1, "[b]" );
       
}
       
size_t found2 = sTekst.find( str2 );
       
if( found2 != string::npos )
       
{
           
sTekst.erase( found2, str2.size() );
           
sTekst.insert( found2, "[/b]" );
       
}
       
if( !( sTekst[ i ] == ' ' && sTekst[ i + 1 ] == ' ' ) )
       
{
           
sWynik += sTekst[ i ];
       
}
    }
   
   
   
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-179289
Venithas
Temat założony przez niniejszego użytkownika
» 2022-02-11 12:50:58
Dzięki wielkie, tak myślałem że przekombinowane, a "if" dałem w tym miejscu tylko dlatego żeby ten program działał bo "znajdz3" osiągał kosmiczne wartości bez tego.
Byłem pewien że jest lepszy sposób na napisanie tego programu i nie byłem zadowolony z swojego rozwiązania dlatego też założyłem temat, bo nie potrafię zostawić tak rozdziału.
Niewątpliwie jest to rozdział przy którym najwięcej czasu spędziłem i najwięcej wyciągnę, Twoje warunki w "if" przy usuwaniu spacji to piękno w prostocie, jeszcze raz dzięki i zamykam temat.
P-179290
« 1 »
  Strona 1 z 1