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

c++ problemy z liczeniem ciagu znakow z tekstu

Ostatnio zmodyfikowano 2016-02-11 16:12
Autor Wiadomość
carlosmay
» 2016-02-11 13:25:09
Pierwszy string to cały wyraz, a drugi string to podciąg.
1. Pierwszy znak podciągu porównujesz z kolejnymi znakami wyrazu zaczynając od pierwszego znaku.
2. Jeżeli trafisz porównujesz kolejne znaki obu stringów (w zagnieżdżonej pętli, gdy znaki są takie same aż do końca podciągu dodaj licznik).
3. Po zakończeniu wewnętrznej pętli przeszukuj wyraz dalej (od następnego znaku).
P-144732
darko202
» 2016-02-11 13:35:41
P-144733
mateczek
» 2016-02-11 16:12:58
sam użyłeś funkcji wyszukującej w przykładowym kodzie

zawsze możesz sobie sam napisać funkcję wyszukującą jeśli masz zakaz co do funkcji bibliotecznych:)

C/C++
#include <iostream>
#include<string>
using namespace std;

size_t find( string b, string m, size_t poss ) {
    for( uint i = poss; i < b.size(); i++ ) {
        if(( i + m.size() - 1 ) > b.size() ) return string::npos;
       
        for( uint k = 0; k < m.size(); k++ ) {
            if( m[ k ] != b[ i + k ] ) break;
           
            if( k == m.size() - 1 ) return i;
           
        }
    }
}


int main()
{
    string napis { "ananana" };
    string fragment { "ana" };
    std::size_t found = 0;
    int licznik = 0;
    while( 1 ) {
        found = find( napis, fragment, found );
        if( found == std::string::npos ) break;
       
        found++;
        licznik++;
    }
    cout << licznik << endl;
}
P-144742
1 « 2 »
Poprzednia strona Strona 2 z 2