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

Lekcja 28 Modyfikowanie tekstu. (zadanie)

Ostatnio zmodyfikowano 2014-09-24 22:28
Autor Wiadomość
Rashmistrz
Temat założony przez niniejszego użytkownika
Lekcja 28 Modyfikowanie tekstu. (zadanie)
» 2014-09-21 19:34:29
Według mnie mój program powinien usunąć spacje
następujące po sobie, jednak się tak nie dzieje,
więc zwracam się do was o pomoc w znalezieniu
mojego błędu(-ów), którego(-ych) ja nie mogę
znaleźć...

"replacator.cpp":
C/C++
#include <iostream>
#include <string>

std::string konwertuj( std::string & sTekst )
{
    std::string sWynik = sTekst;
    int ostatniaPozycja;
    int znalezionaPozycja = sWynik.find( ' ', 0 );
    //pozycje spacji: 5 10 15 23 24 25 26 27 28 29 30 36 37 38 39 40
    //po edycji:      5 10 15 23 24 25 26 27 32 33 34
    while( znalezionaPozycja != std::string::npos )
    {
        std::cout << znalezionaPozycja << ' ';
        ostatniaPozycja = znalezionaPozycja;
        znalezionaPozycja = sWynik.find( ' ', ostatniaPozycja + 1 );
        if( ostatniaPozycja == znalezionaPozycja - 1 )
             sWynik.erase( ostatniaPozycja, 1 );
       
    }
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    return 0;
}
P-117290
pekfos
» 2014-09-21 19:46:48
Nie zmniejszasz znalezionaPozycja po usunięciu znaku.
P-117291
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-21 20:05:04
Tak, zgadza się...
Teraz zajmę się drugim podpunktem zadania :F
Mój kod po edycji wygląda tak:
C/C++
#include <iostream>
#include <string>

std::string konwertuj( std::string & sTekst )
{
    std::string sWynik = sTekst;
    int ostatniaPozycja;
    int znalezionaPozycja = sWynik.find( ' ', 0 );
    //pozycje spacji: 5 10 15 23 24 25 26 27 28 29 30 36 37 38 39 40
    //po wykonaniu:   5 10 15 23 29
    //Usuwanie spacyj:
    while( znalezionaPozycja != std::string::npos )
    {
        std::cout << znalezionaPozycja << ' ';
        ostatniaPozycja = znalezionaPozycja;
        znalezionaPozycja = sWynik.find( ' ', ostatniaPozycja + 1 );
        if( ostatniaPozycja == znalezionaPozycja - 1 )
        {
            sWynik.erase( ostatniaPozycja, 1 );
            znalezionaPozycja--;
        };
    };
    std::cout << std::endl;
    //Zamiana nawiasow ostrych na kwadratowe
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    return 0;
}
P-117292
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-21 20:29:30
Teraz mam inny problem, chyba jakoś źle użyłem metody.
Tak myślę, bo log kompilacji odsyła mnie do innych plików. :F

"replacator.cpp"
C/C++
#include <iostream>
#include <string>

std::string konwertuj( std::string & sTekst )
{
    std::string sWynik = sTekst;
    int ostatniaPozycja;
    int znalezionaPozycja = sWynik.find( ' ', 0 );
    //pozycje spacji: 5 10 15 23 24 25 26 27 28 29 30 36 37 38 39 40
    //po wykonaniu:   5 10 15 23 29
    //Usuwanie spacyj:
    while( znalezionaPozycja != std::string::npos )
    {
        std::cout << znalezionaPozycja << ' ';
        ostatniaPozycja = znalezionaPozycja;
        znalezionaPozycja = sWynik.find( ' ', ostatniaPozycja + 1 );
        if( ostatniaPozycja == znalezionaPozycja - 1 )
        {
            sWynik.erase( ostatniaPozycja, 1 );
            znalezionaPozycja--;
        };
    };
    std::cout << std::endl;
    //Zamiana nawiasow ostrych na kwadratowe
    znalezionaPozycja = sWynik.find( '<', 0 );
    while( znalezionaPozycja != std::string::npos )
    {
        sWynik.erase( znalezionaPozycja, 1 );
        sWynik.insert( znalezionaPozycja, '[' );
        znalezionaPozycja = sWynik.find( '<', znalezionaPozycja );
    };
    znalezionaPozycja = sWynik.find( '>', 0 );
    while( znalezionaPozycja != std::string::npos )
    {
        sWynik.erase( znalezionaPozycja, 1 );
        sWynik.insert( znalezionaPozycja, ']' );
        znalezionaPozycja = sWynik.find( '>', znalezionaPozycja );
    };
    return sWynik;
}
int main()
{
    std::string tekst = "<b>to jest </b> testowy        napis     :)";
    std::cout << konwertuj( tekst ) << std::endl;
    return 0;
}
P-117293
pekfos
» 2014-09-21 20:36:21
Tak myślę, bo log kompilacji odsyła mnie do innych plików. :F
Błędy się podaje, a nie mówi, że są.
P-117294
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-21 20:37:35
Nie potrafię całego loga(-u?) kompilacji skopiować. >_<
E:\CACHE\007\000\TEST\replacator.cpp||In function 'std::string konwertuj(std::string&)':|
E:\CACHE\007\000\TEST\replacator.cpp|29|error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|1293|error:   initializing argument 2 of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::insert(std::basic_string<_CharT, _Traits, _Alloc>::size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = unsigned int]' [-fpermissive]|
E:\CACHE\007\000\TEST\replacator.cpp|36|error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|1293|error:   initializing argument 2 of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::insert(std::basic_string<_CharT, _Traits, _Alloc>::size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = unsigned int]' [-fpermissive]|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
//dla mnie to chaos :F
P-117295
pekfos
» 2014-09-21 20:41:35
C/C++
sWynik.insert( znalezionaPozycja, 1, ']' );
P-117296
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-21 20:44:56
Zadanie wykonane. :)
Dziękuję za pomoc...
P-117298
« 1 » 2
  Strona 1 z 2 Następna strona