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:
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 ); wypelnijMacierz( macA, sizeX, sizeY ); posX = 1; posY = 10; wyswietlMacierz( macA, sizeX, sizeY ); elementMacierzy( macA, sizeX, sizeY, posX, posY ) = - 100; 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 |
|
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. |
|
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. |
|
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: float & elementMacierzy( float ** macierz, int sizeX, int sizeY, int posX, int posY ) { return &( macierz + sizeX * posY + posX ); }
|
|
Monika90 |
» 2014-11-13 18:36:55 Zgaduję że tak float & elementMacierzy( float ** macierz, int sizeX, int sizeY, int posX, int posY ) { return macierz[ posX - 1 ][ posY - 1 ]; }
a może tak 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 |
|
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ę. |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2014-11-13 23:02:10 Dziękuję wszystkim za pomoc :) Zamykam. |
|
« 1 » |