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

Wczytywanie wielu linii tekstu

Ostatnio zmodyfikowano 2020-10-23 15:36
Autor Wiadomość
gonskabalbinka
Temat założony przez niniejszego użytkownika
Wczytywanie wielu linii tekstu
» 2020-10-22 20:15:41
Witam mam do napisania następujący program. Deklarujemy talbice stringów, podajemy na  wejściu liczbę np. 5 i w pętli wczytujemy zadaną liczbę stringów do tablicy stringów. Mam problem z tym jak wczytać z wejścia string przy pomocy funkcji getline(), bo na wejściu możemy podać string ze spacjami.
Fragment kodu gdzie staram się wczytywać string.
C/C++
for( int i = 0; i < rows; i++ )
{
    cin.ignore();
    getline( cin, Text ); //Text zmienna tymczasowa do której wczytuję aktualny wiersz z wejści
    cin.ignore();
P-177625
pekfos
» 2020-10-22 20:20:34
I co jest nie tak z tym kodem? Chodzi o te dziwne ignore() które masz przed i po?
P-177626
gonskabalbinka
Temat założony przez niniejszego użytkownika
Nieprawidłowe wartości
» 2020-10-22 20:25:31
Dokładnej problem jest ze znakami nowej linii, bo program ma oddzielnie wypisać część stringu o indeksach parzystych i drugą część o indeksach nieparzystych.
P-177627
pekfos
» 2020-10-22 20:30:41
Chyba chodzi o to: » Kurs C++ / FAQstd::getline() mi nie działa! pytanie/odpowiedź
P-177628
gonskabalbinka
Temat założony przez niniejszego użytkownika
Poprawiłem już program zadziałał
» 2020-10-22 21:31:11
Poniżej kod
C/C++
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int rows;
    cin >> rows;
    vector < string > Text;
    string tmp;
    for( int i = 0; i < rows; i++ )
    {
        cin >> tmp;
        Text.push_back( tmp );
        tmp.clear();
    }
    string even;
    string odd;
    for( int i = 0; i < rows; i++ )
    {
        for( int j = 0; j < Text.at( i ).size(); j++ )
        {
            if( j % 2 == 0 )
                 even += Text.at( i ).at( j );
            else
                 odd += Text.at( i ).at( j );
           
        }
        cout << even << "  " << odd << endl;
        even.clear();
        odd.clear();
    }
}
Jak powinien wyglądać program gdybym zamiast wektora string chciał przechowywać dane w dwuwymiarowej tablicy stringów? I co zrobić, żeby wczytywać kolejne linie za pomocą getline, tak żeby móc wczytywać linie ze spacjami
P-177629
pekfos
» 2020-10-22 22:32:12
To zadanie na SPOJa?

Jak powinien wyglądać program gdybym zamiast wektora string chciał przechowywać dane w dwuwymiarowej tablicy stringów?
Nie dwuwymiarowej tablicy znaków? Podobnie, tylko musisz znać z góry maksymalną długość każdego z napisów i dynamicznie alokować pierwszy wymiar pod ilość napisów. Wczytywanie może być z użyciem cin.getline(). Jakiś konkretny powód żeby to zmieniać? Wektor napisów to jest wariant dwuwymiarowej tablicy znaków.

I co zrobić, żeby wczytywać kolejne linie za pomocą getline, tak żeby móc wczytywać linie ze spacjami
Masz przykładowy kod w materiale który podałem.

P-177630
gonskabalbinka
Temat założony przez niniejszego użytkownika
Dzięki za odpowiedzi
» 2020-10-22 22:57:55
To było zadanie z hackerrank. Wydaje mi się, że może zostać tak jak jest napisane. Serwer dał prawidłowe odpowiedzi.
P-177631
pekfos
» 2020-10-23 15:36:40
Nie ma sensu przechowywać wszystkich danych w pamięci w tego typu zadaniach.
» Kurs C++ / FAQMam problem z zadaniem ze SPOJa pytanie/odpowiedź
P-177632
« 1 »
  Strona 1 z 1