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

[C++] Wpisywanie danych do tablicy

Ostatnio zmodyfikowano 2014-11-08 16:25
Autor Wiadomość
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ź :)
P-120167
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.
P-120172
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:

C/C++
#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?
P-120174
Monika90
» 2014-11-08 16:04:18
Zamiast tego
C/C++
for( int i = 0; i < tab.size(); i++ )
{ for( int j = 0; j < tab.size(); j++ )
    {
        cout << tab[ i ][ j ] << endl;
    }
}

daj to
C/C++
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.
P-120175
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 :(
P-120176
Monika90
» 2014-11-08 16:17:14
A bo tu jest błąd:
C/C++
for( int j = 0; j < n; j++ )
     cin >> t;

tab.push_back( t );

powinno być
C/C++
for( int j = 0; j < n; j++ )
{
    cin >> t;
    tab.push_back( t );
}
P-120177
lucja
Temat założony przez niniejszego użytkownika
» 2014-11-08 16:25:29
śmiga :) dziękuję bardzo za pomoc :)
P-120178
« 1 »
  Strona 1 z 1