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

Usuwanie wielu spacji.

Ostatnio zmodyfikowano 2017-10-14 19:07
Autor Wiadomość
Roud
Temat założony przez niniejszego użytkownika
Usuwanie wielu spacji.
» 2017-10-14 12:56:26
Witam mam napisać program, który usunie wiele tych samych  znaków np spacji. Jednak tego nie robi. Gdzie jest błąd? W niektórych miejscach pozostaje podwójna spacja.
C/C++
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string napis;
    cout << "podaj napis \n";
    getline( cin, napis );
    for( int i = 0; i < napis.length() - 1; i++ )
    {
        if( napis.at( i ) == ' ' && napis.at( i + 1 ) == ' ' )
             napis.erase( i, 1 );
       
        cout << napis << "\n";
    }
   
    cout << napis;
   
}
P-165733
nanoant20
» 2017-10-14 14:17:49
Tutaj masz podobny temat
http://cpp0x.pl/forum/temat/?id=13854

P-165734
mateczek
» 2017-10-14 15:21:11
warunek jest ok i nawet Ci usuwa spacje choć nie tak jak byś chciał
Problem leży w tym, że pętla for automatycznie inkrementuje "i". A w przypadku usunięcia spacji nie wolno ci podnieść "i" bo skaczesz o dwa znaki.
C/C++
#include <iostream>
#include <string>
using namespace std;
int main() {
    string napis;
    cout << "podaj napis \n";
    getline( cin, napis );
    for( size_t i = 0; i < napis.size() - 1; ) {
        if( napis[ i ] == ' ' && napis[ i + 1 ] == ' ' ) {
            napis.erase( i, 1 ); // tu był błąd bo robiłeś inkrementacje po funkcji erase.
            continue; // a trzeba wrócić do początku pętli bez inkrementacji
        }
        i++; // jeśli usunąłeś spację to nie zwiększasz indexu
        cout << napis << "\n";
    }
    cout << napis;
}
P-165736
Roud
Temat założony przez niniejszego użytkownika
» 2017-10-14 19:07:41
Dziękuje bardzo za pomoc
P-165745
« 1 »
  Strona 1 z 1