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

Problem ze stringami

Ostatnio zmodyfikowano 2014-03-15 17:32
Autor Wiadomość
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
P-106387
MrPoxipol
» 2014-03-15 10:15:47
Podziel na zdania, a później każde zdanie podziel na wyrazy i policz ile ich jest.
Słowo klucz: std::getline() z separatorem (http://en.cppreference.com/w​/cpp/string/basic_string/getline) i std::vector.

@down,
można to ominąć, ale zadania wykonuje się wg ich treści.
P-106389
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?
P-106390
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.
P-106392
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?

C/C++
#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;
}
P-106407
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.
P-106420
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?
P-106425
Monika90
» 2014-03-15 15:16:08
zamiast getline
C/C++
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;
}
P-106431
« 1 » 2
  Strona 1 z 2 Następna strona