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

Wpisywanie wartości elementu do macierzy przez funkcję

Ostatnio zmodyfikowano 2014-11-13 23:02
Autor Wiadomość
Vercevales
Temat założony przez niniejszego użytkownika
Wpisywanie wartości elementu do macierzy przez funkcję
» 2014-11-13 17:23:22
Witajcie.
Mam takie oto zadanie:

C/C++
// Uzupełnić program o brakujące elementy tak, aby poprawne stało się
// wykonywanie poniższego fragmentu kodu (uwaga, należy użyć zmiennej typu static):

int main() {
    unsigned int sizeX = 10;
    unsigned int sizeY = 10;
    unsigned int posX, posY;
   
    float ** macA = stworzMacierz( sizeX, sizeY );
   
    wypelnijMacierz( macA, sizeX, sizeY, - 13.1f ); //wypelnia macierz wartością -13.1
    wypelnijMacierz( macA, sizeX, sizeY ); // wypelnia macierz wartością 0
   
    posX = 1;
    posY = 10;
   
    wyswietlMacierz( macA, sizeX, sizeY );
    elementMacierzy( macA, sizeX, sizeY, posX, posY ) = - 100; // wstawia wartość -100 do elementu [1,10]
   
    cout << elementMacierzy( macA, sizeX, sizeY, posX, posY ) << endl;
   
    float * wiersz MacA = wierszMacierzy( macA, sizeY, posY );
   
    wyswietlMacierz( macA, sizeX, sizeY );
   
    kasujMacierz( macA, sizeX, sizeY );
}
 
Mój problem z nim jest w tym miejscu:
elementMacierzy( macA, sizeX, sizeY, posX, posY ) = - 100;

Czy takie działanie jest możliwe ? Próbowałem coś kombinować z przeładowaniem "=" ale na nic nie wpadłem. Klas też próbowałem używać, choć nie ma ich w zadaniu.
Co trzeba zastosować, aby taki manewr był możliwy (jeżeli możliwy jest) ?

Pozdrawiam
P-120515
michal11
» 2014-11-13 17:45:12
Możliwe, ale funkcja elementMacierzy musiałby zwracać referencję. Inna sprawa, że takie rozwiązanie jest wysoce niezalecane.
P-120517
Monika90
» 2014-11-13 18:14:13
Niezalecane są owning raw pointers (jak to jest po polsku?), wskaźniki do wskaźników i ręczne zarządzanie zasobami.

Natomiast zwracanie referencji z funkcji ma sensowne zastosowania, w końcu operator [] std::vector tak właśnie działa.
P-120522
Vercevales
Temat założony przez niniejszego użytkownika
» 2014-11-13 18:24:13
To teraz poproszę o pomoc jak funkcja ma zwracać referencję do elementu macierzy, gdyż nie działa takie rozwiązanie:
C/C++
float & elementMacierzy( float ** macierz, int sizeX, int sizeY, int posX, int posY ) {
    return &( macierz + sizeX * posY + posX );
}
P-120524
Monika90
» 2014-11-13 18:36:55
Zgaduję że tak
C/C++
float & elementMacierzy( float ** macierz, int sizeX, int sizeY, int posX, int posY ) {
    return macierz[ posX - 1 ][ posY - 1 ];
}

a może tak
C/C++
float & elementMacierzy( float ** macierz, int sizeX, int sizeY, int posX, int posY ) {
    return macierz[ posY - 1 ][ posX - 1 ];
}
bo skąd mam wiedzieć co robi funkcja stworzMacierz
P-120528
michal11
» 2014-11-13 18:54:30
Źle sformułowałem swoje zdanie, chodziło mi o tym, że niezalecane jest przypisywanie czegoś do wartości zwracanej przez funkcję.
P-120530
Vercevales
Temat założony przez niniejszego użytkownika
» 2014-11-13 23:02:10
Dziękuję wszystkim za pomoc :)
Zamykam.
P-120558
« 1 »
  Strona 1 z 1