[C++] Wpisywanie danych do tablicy
Ostatnio zmodyfikowano 2014-11-08 16:25
lucja Temat założony przez niniejszego użytkownika |
[C++] Wpisywanie danych do tablicy » 2014-11-08 14:35:26 Cześć. Mam w zadaniu utworzyć tablicę dwuwymiarową, a potem przypisać jej dane. Problem w tym, że użytkownik sam określa rozmiar tablicy i przypisuje jej elementy, np. przy w pisaniu 2 3 1 2 3 4 5 6 powstaje tablica 2x3 1 2 3 4 5 6
czy ma ktoś jakiś pomysł jak to zrobić? Z góry dzięki za odpowiedź :) |
|
Monika90 |
» 2014-11-08 15:07:37 std::vector<int>, o rozmiarze równym 2 * 3, wstawiasz liczby do tego wektora za pomocą push_back. Dostęp do elementów masz za pomocą vec[i * 3 + j]
EDIT To znaczy, jeżeli wektor jest pusty, to możesz dodać do niego wszystkie liczby za pomocą push_back. Jeżeli od razu utworzysz niepusty wektor, to przypisujesz wczytywane lczby do odpowiednich komórek tego wektora. |
|
lucja Temat założony przez niniejszego użytkownika |
» 2014-11-08 15:48:23 Nigdy nie tworzyłam w bibliotece vector, więc czuję się trochę zagubiona, ale stworzyłam coś takiego: #include <iostream> #include <vector> using namespace std;
int main() { int m; int n; cin >> m; cin >> n; vector < int > tab; int t; for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) cin >> t; tab.push_back( t ); } for( int i = 0; i < tab.size(); i++ ) { for( int j = 0; j < tab.size(); j++ ) { cout << tab[ i ][ j ] << endl; } } return 0; }
Problem w tym, że w tym stanie mi się kompletnie nie kompiluje (błąd: comparison between signed and unsigned integer expressions przy dwóch ostatnich pętlach), a gdy usunę ostatnią pętlę for (int j=0; j<tab.size(); j++) to wyświetla mi jedynie ostatnią wartość z każdej kolumny. Gdzie tkwi błąd w moim rozumowaniu? |
|
Monika90 |
» 2014-11-08 16:04:18 Zamiast tego for( int i = 0; i < tab.size(); i++ ) { for( int j = 0; j < tab.size(); j++ ) { cout << tab[ i ][ j ] << endl; } }
|
daj to for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) { cout << tab[ i * n + j ] << ' '; } cout << endl; }
i powinno być dobrze. |
|
lucja Temat założony przez niniejszego użytkownika |
» 2014-11-08 16:10:40 teraz zamiast tablicy 2x3 o elementach 1,2,3,4,5,6 wyświetla mi jedynie 3 6 i jakieś długie cyfry, za każdym razem inne :( |
|
Monika90 |
» 2014-11-08 16:17:14 A bo tu jest błąd: for( int j = 0; j < n; j++ ) cin >> t;
tab.push_back( t );
|
powinno być for( int j = 0; j < n; j++ ) { cin >> t; tab.push_back( t ); }
|
|
lucja Temat założony przez niniejszego użytkownika |
» 2014-11-08 16:25:29 śmiga :) dziękuję bardzo za pomoc :) |
|
« 1 » |