Wczytywanie wielu linii tekstu
Ostatnio zmodyfikowano 2020-10-23 15:36
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. for( int i = 0; i < rows; i++ ) { cin.ignore(); getline( cin, Text ); cin.ignore();
|
|
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? |
|
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. |
|
pekfos |
» 2020-10-22 20:30:41 |
|
gonskabalbinka Temat założony przez niniejszego użytkownika |
Poprawiłem już program zadziałał » 2020-10-22 21:31:11 Poniżej kod #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 |
|
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. |
|
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. |
|
pekfos |
» 2020-10-23 15:36:40 |
|
« 1 » |