Prezes933 Temat założony przez niniejszego użytkownika |
Problem ze stringami » 2014-03-15 10:01:06 Witam,
Siedzę już trochę czasu nad jednym kłopotliwym zadaniem. Mianowicie o treści: " Dany jest tekst podzielony na zdania. Koniec zdania jest oznaczony przez '.'. Należy policzyć słowa w każdym ze zdań." I teraz co wiem. Wiem, że najlepiej skorzystać z tablic. Wprowadzić tablice która będzie zawierała owe zdania. Następnie za pomocą "if-ów" / albo "do while" ( próbowałem obydwoma, niestety bezskutecznie) sprawdzać, czy argument z tablicy jest kropką. Plan mam, ale nie wiem jak to przelać na kompilator. Może ktoś ma czas i trochę nieprzymuszonej woli na pomoc dla początkującego?
Pozdrawiam |
|
MrPoxipol |
» 2014-03-15 10:15:47 |
|
Monika90 |
» 2014-03-15 10:16:01 A taki tekst p.p..p-p.p z ilu wg Cieie składa się zdań i ile jest wyrazów w każdym zdaniu? |
|
Prezes933 Temat założony przez niniejszego użytkownika |
» 2014-03-15 10:24:26 No w tym przypadku to pewnie zdaniem jest ciąg wyrazów o wartości większej od co najmniej trzech. Te zdania ja mam sam zadeklarować w tablicy. |
|
Prezes933 Temat założony przez niniejszego użytkownika |
» 2014-03-15 13:09:56 Ogarnąłem sobie getline. Jednakże teraz mam kolejne pytanie. Jak zadeklarować pętle? Ponieważ jeśli piszę, np. while( tab[ i ] != '.' ) wywala błąd. Stąd też jak inaczej zadeklarować znak? #include <iostream> #include <cstring> using namespace std;
int main() { string tekst; cout << "Podaj tekst: " << endl; getline( cin, tekst ); cout << "Podany tekst: \t " << tekst << endl; return 0; } |
|
Monika90 |
» 2014-03-15 14:26:04 umieszczaj kod w znacznikach [cpp] [/cpp] bo inaczej forum traktuje [i] jak polecenie formatowania Użyj getline( cin, zdanie, '.' ); w pętli, to podzieli strumień wejściowy na zdania. |
|
Prezes933 Temat założony przez niniejszego użytkownika |
» 2014-03-15 14:52:33 Zastosowałem się do Twoich wskazówek, utworzyłem pętlę i dzieli na zdania. Jednakże zdania mogą kończyć się na "?" lub "!". Próbowałem zastosować getline( cin, zdanie, '.' || '?' || '!' ) jednak kompilator tego nie kupił. Znasz jakiś sposób zapisania tej alternatywy? |
|
Monika90 |
» 2014-03-15 15:16:08 zamiast getline std::istream & get_sentence( std::istream & in, std::string & str ) { str.clear(); char ch; while( in.get( ch ) && ch != '.' && ch != '!' && ch != '?' ) str.push_back( ch ); return in; }
|
|
« 1 » 2 |