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

Problemz STL

Ostatnio zmodyfikowano 2017-04-02 22:36
Autor Wiadomość
jasiekkm
Temat założony przez niniejszego użytkownika
Problemz STL
» 2017-04-02 18:04:28
Witam, mam problem z stl, musze dla kazdego z toru (5 torow) zrobic takie cos (zdj ponizej) ale prowadzacy powiedzial zebym zastosowal wektor wektrow i mam problem z implementacja tego. Prosze o pomoc. Probowalem tak: (zdj jeszcze nizej).



C/C++
char podp1[ 4 ] = { 'A', 'A', 'B', 'B' };
vector < char > tor1;

for( int i = 0; i < 4; i++ )
     tor1.push_back( podp1[ i ] );

vector < char > zwolniony_tor1;

C/C++
char kolejnosc[ 5 ][ 4 ] = { { 'A', 'A', 'B', 'B' },
    { 'A', 'B', 'A', 'B' },
    { 'C', 'D', 'D' },
    { 'A', 'B', 'B', 'C' },
    { 'C', 'D', 'D' } };

vector < vector < int > > tory_prawidlowe; // wektor dwuwymiarowy torów prawdilowych


for( int k = 1; k < 6; k++ ) {
    if( k == 3 || k == 5 ) {
       
        for( int l = 1; l < 4; l++ ) {
            tory_prawidlowe[ k ][ l ].push_back( kolejnosc[ k ][ l ] );
        } }
    else {
        for( int l = 1; l < 5; l++ ) {
            tory_prawidlowe[ k ][ l ].push_back( kolejnosc[ k ][ l ] );
        } }
}
P-159704
Bielan
» 2017-04-02 19:55:46

zrobic takie cos

Pierwszy przykład pokazuje przepisanie tablicy do wektora. Nic więcej nam to nie mówi. Drugi kod też robi 'coś'. Bez kryształowej kuli albo dokładnego opisu zadania nie będziemy w stanie ci pomóc.
P-159712
jasiekkm
Temat założony przez niniejszego użytkownika
» 2017-04-02 20:04:24
tu nie trzeba opisu zadania, potrzebuje zrobic wektor wektrow i uzupelnic go tablica dwuwymiarowaa charow a pozniej wyswietlic. mam takie cos, ale pokazuje mi blad z odczytem z pamieci.

C/C++
char wagony[ 3 ] = { 'A', 'B', 'C' };
char kolejnosc[ 5 ][ 4 ] = { { 'A', 'A', 'B', 'B' }, { 'A', 'B', 'A', 'B' }, { 'C', 'D', 'D' }, { 'A', 'B', 'B', 'C' }, { 'C', 'D', 'D' } };

vector < vector < int > > tory_prawidlowe; // wektor dwuwymiarowy torów prawdilowych

int a;
for( int k = 0; k < 5; k++ ) {
    for( int l = 0; l < 4; l++ ) {
        tory_prawidlowe[ k ][ l ] = kolejnosc[ k ][ l ]; //z push_back tez nie dziala
    } };
P-159716
Bielan
» 2017-04-02 20:23:05
1. 'Coś mi nie działa', 'Coś ma działać', 'Pokazuje mi błąd'. To są sformułowania, które sprawiają, że ciężko się z tobą komunikuje ponieważ nie ma jasnej informacji. Powinieneś dokładnie określić jaki masz teraz wynik a jakiego oczekujesz.

2. Nie wiesz jak działa wektor.

» standard C++vector
Wektor domyślnie posiada zerowy rozmiar. Więc wektor wektorów, który deklarujesz to jeden wektor, który nie zawiera żadnych wektorów. Aby coś zawierał musisz tam coś dodać albo wykonać jakąś akcję, która sprawi, że tam coś się doda.

C/C++
tory_prawidlowe.resize( 5 );

Wtedy będziesz miał wektor, który zawiera pięć pustych wektorów. Od tej pory można sensownie używać
tory_prawidlowe[ x ]
.


C/C++
tory_prawidlowe[ k ][ l ] = kolejnosc[ k ][ l ];
To nie zadziała ponieważ wektor o indeksie 'k' nie ma elementu 'l'. Musi być najpierw dodany.
C/C++
tory_prawidlowe[ k ].push_back( kolejnosc[ k ][ l ] );

3. Nie wszystkie twoje tablice mają rozmiar równy '4', jesteś pewien, że wiesz co robisz?
P-159720
karambaHZP
» 2017-04-02 20:35:33
prowadzacy powiedzial zebym zastosowal wektor wektrow
To też jest utrudnianie sobie życia.
Można zadeklarować wektor o rozmiarze [wys X szer] i poruszać się po nim jak po dwuwymiarowym.
P-159725
mokrowski
» 2017-04-02 21:27:55
#include <iostream>
#include <vector>
#include <iomanip>
#include <string>

using namespace std;

vector<vector<int>> makeVectorTable(size_t width, size_t height) {
    // XXX: Popatrz na składnię tworzenia takiego wektora
    return vector<vector<int>>(height, vector<int>(width));
}

void showVectorTable(const vector<vector<int>>& vectorTable) {
    cout << string(78, '=') << '\n';
    for(const auto& row: vectorTable) {
        for(const auto& value: row) {
            cout << setw(4) << value;
        }
        cout << '\n';
    }
    cout << string(78, '=') << '\n';
}

void fillVectorTable(vector<vector<int>>& vectorTable) {
    // XXX: Wypełnienie wektora wartościami index wiersza * indeks kolumny
    for(size_t rowIndex = 0; rowIndex < vectorTable.size(); ++rowIndex) {
        for(size_t columnIndex = 0;
                columnIndex < vectorTable[rowIndex].size(); ++columnIndex) {
            vectorTable[rowIndex][columnIndex] = rowIndex * columnIndex;
        }
    }
}

int main() {
    auto table = makeVectorTable(19, 19);
    fillVectorTable(table);
    showVectorTable(table);
}
P-159734
jasiekkm
Temat założony przez niniejszego użytkownika
» 2017-04-02 22:36:23
Widzisz Bielan niby nie mozesz sie ze mna dogadac a rozwiazales moj problem :D dzieki slicznie
P-159742
« 1 »
  Strona 1 z 1