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ść
cool
Temat założony przez niniejszego użytkownika
c++ problemy z liczeniem ciagu znakow z tekstu
» 2016-02-10 14:18:35
Siemka mam problem ciągle wyskakuje mi błąd kompilacji w ifie będący w petli for. Pętla ma za zadanie policzyć ilość wystąpień x - (czyli ciągu wyrazów) w tekście wyczytanym z pliku. Np jak jest wyraz banana a słowo szukane to ana to ma wyświetlić wartość 2
Pojawia sie taki komunikat:
error: no match for 'operator==' in 'napis.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)j)) == x'|



C/C++
int linia = 1;
int ile = 0;
string napis;



int main()
{
   
    string x;
    cout << "podaj ciag znakow: ";
    cin >> x;
    fstream plik;
    plik.open( "wejscie.txt", ios::in );
    string napis;
    getline( plik, napis );
   
   
    string szukaj = x;
    size_t pozycja = napis.find( szukaj );
    int rozmiar = napis.length();
    int rozmiar1 = x.length();
   
   
    for( int j = 0; j <= rozmiar; j++ )
    {
        if( napis[ j ] == x );
       
        {
            ile = ile + 1;
        }
       
       
    }
   
    cout << ile;
P-144681
carlosmay
» 2016-02-10 14:59:26
Pojawia sie taki komunikat: error: no match for 'operator==' in 'napis.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)j)) == x'|
C/C++
if( napis[ j ] == x ); // porównanie char do std::string (nie ma porównania) i ten srednik?

{
    ile = ile + 1;
}
Instrukcja if...else
P-144682
cool
Temat założony przez niniejszego użytkownika
» 2016-02-10 15:11:15
To jak to mozna inaczej zastąpić?
P-144683
mateczek
» 2016-02-10 15:20:08

C/C++
for( int j = 0; j <= rozmiar; j++ ) {
    if( napis[ j ] == x ) {
        ile = ile + 1; // tak znajdziesz co najwyżej pojedynczy literę literę nie napis :P
    }
}
P-144684
cool
Temat założony przez niniejszego użytkownika
» 2016-02-10 15:28:49
a jak rozbić napis żeby z niego wyciągnać wyraz
P-144685
carlosmay
» 2016-02-10 16:43:03
Przecież std::string napis; nie jest tablicą wyrazów.
C/C++
std::string wyraz, x;
char znak;
//....
( wyraz == x )
//....
( wyraz[ i ] == znak )
//....

a jak rozbić napis żeby z niego wyciągnać wyraz
Pobieraj wyrazy operatorem >> albo wyszukuj podciągi w zdaniu ograniczone spacjami (czy czym tam oddzielone są wyrazy w pliku).
P-144689
mateczek
» 2016-02-10 22:22:42
C/C++
#include <iostream>

using namespace std;

int main()
{
    string napis { "bananana" };
    string fragment { "ana" };
    std::size_t found = 0;
    int licznik = 0;
    while( 1 ) {
        found = napis.find( fragment, found );
       
        if( found == std::string::npos ) break;
       
        licznik++;
        found++;
    }
    cout << licznik << endl;
}
P-144722
cool
Temat założony przez niniejszego użytkownika
» 2016-02-11 12:59:10
w tym problem że nie można używać żdanych funkcji bibliotecznych wyszukujących wystąpienia ciągu znaków w tekście
P-144731
« 1 » 2
  Strona 1 z 2 Następna strona