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

[cpp] [string] swap wyrazów

Ostatnio zmodyfikowano 2018-02-16 11:59
Autor Wiadomość
aaadam
Temat założony przez niniejszego użytkownika
[cpp] [string] swap wyrazów
» 2018-02-15 16:11:16
witam, chcę w stringu (dużym)
zamienić 'i' na 'oraz' i na odwrót, gdy odpowiednio vektor<int> vek == się 0 lub 1
gdzieś robię błąd i głupieje już ...
help :)
a o to kod :

C/C++
string myString = argv[ 3 ];
bitset < 8 > bb;
vector < int > vek;
for( std::size_t i = 0; i < myString.size(); ++i )
{
    cout << static_cast < char >( bitset < 8 >( myString[ i ] ).to_ulong() ) << "  ";
    cout << bitset < 8 >( myString[ i ] );
    bb = bitset < 8 >( myString[ i ] );
    for( int j = 7; j >= 0; j-- )
    {
        if( bb[ j ] == 1 )
             vek.push_back( 1 );
        else if( bb[ j ] == 0 )
             vek.push_back( 0 );
       
    }
    cout << endl;
}
cout << "weksize()" << vek.size() << endl;
for( int i = 0; i < vek.size(); i++ ) {
    if( i % 8 == 0 && i != 0 )
         cout << " ";
   
    cout << vek[ i ];
   
}
cout << endl << endl;
std::ifstream t( argv[ 1 ] );
std::string str(( std::istreambuf_iterator < char >( t ) ),
std::istreambuf_iterator < char >() );
int insert_counter = 0;
bool is_inserted = 0;
//cout<<endl<<str<<endl;

int shift = atoi( argv[ 4 ] );
cout << endl << str << endl;
for( int i = 1; i < str.size(); i++ ) { //swap
    if( str[ i ] == 'i' && str[ i + 1 ] == ' ' && str[ i - 1 ] == ' ' )
    {
        if( vek[ insert_counter ] == 1 )
        {
            str.erase( i, 1 );
            str.insert( i, string( "oraz" ) );
            i += 3;
            insert_counter += 1;
            continue;
        }
    }
    else if( str[ i ] == 'o' && str[ i + 1 ] == 'r' && str[ i + 2 ] == 'a'
    && str[ i + 3 ] == 'z' && str[ i - 1 ] == ' ' && str[ i + 4 ] == ' ' )
    {
        if( vek[ insert_counter ] == 0 )
        {
            str.insert( i, string( "i" ) );
            str.erase( i + 1, 4 );
            insert_counter += 1;
            i -= 3;
        }
    }
}





P-169417
pekfos
» 2018-02-15 17:04:18
Twoje warunki są błędne i przekraczają zakres tablicy.
P-169420
aaadam
Temat założony przez niniejszego użytkownika
» 2018-02-16 11:59:23
dzięki, dałem radę, chory jestem i mój mózg juz nie funkcjonuje tak jak powinien
pozdro


taki warunek powinien być mniej więcej :

C/C++
if( str[ i ] == 'i' && str[ i + 1 ] == ' ' && str[ i - 1 ] == ' ' )
{
    cout << "* " << vek[ insert_counter ] << " " << insert_counter;
    if( vek[ insert_counter ] == 1 ) //dla i ma byc 0
    { cout << "^";
        str.erase( i, 1 );
        str.insert( i, string( "oraz" ) );
        i += 3;
        insert_counter += 1;
        continue;
    }
    else
         insert_counter++;
   
}
P-169446
« 1 »
  Strona 1 z 1