Monika90 |
» 2013-05-14 16:19:59 Uzupełnij definicję klasy okno o następujące metody: figura* operator[](int i) const; //zwraca adres elementu o indeksie i (0<=i<ile) int rozmiar() const; //zwraca liczbę elementów listy
|
Mozesz użyć tych metod do implementcji funkcji pole_okna, wprawdzie złożoność będzie kwadratowa, ale najwyraźniej tak ma być wg twojego nauczyciela. Poza tym, to nie zadziała: jmax musisz przekazać przez referencję, tak wynika z treśći zadania. |
|
Gadziu Temat założony przez niniejszego użytkownika |
» 2013-05-14 16:22:29 No to teraz mnie dobiłaś, myślałem, że w końcu coś sam wykombinuję, a tu jednak nie... Jakieś podpowiedzi? BTW Jaką składnie BBcode używasz, żeby w takiej żółtawej ramce było? |
|
Gadziu Temat założony przez niniejszego użytkownika |
» 2013-05-14 16:29:42 Tak może być? figura * operator []( int i ) const { return r->dane; } int rozmiar() const { return ile; }
|
|
Monika90 |
» 2013-05-14 16:37:11 rozmiar() jest dobrze, natomiast w operatorze[] musisz mieć pętlę która przegląda węzły po koleji i zlicza je. Jak dojdzie do węzła o żądanym numerze, to przerywsz pętlę i zwracasz wskaźnik do figury przechowywany w tym węźle. |
|
Gadziu Temat założony przez niniejszego użytkownika |
» 2013-05-14 16:47:35 Teraz ok? figura * operator []( int i ) const { el * p = r; int k = 0; while( k != i ) { k++; p = p->nast; } return p->dane; }
|
|
Monika90 |
» 2013-05-14 17:11:56 Wygląda dobrze, z tym że kiedy i będzie ujemne albo większe niż ile - 1 , to będziesz miał UB czyli Niezdefiniowane Zachowanie. Jednak jeżeli dobrze rozumiem treść zadania to można założyć, że to się nie zdarzy. |
|
Gadziu Temat założony przez niniejszego użytkownika |
» 2013-05-14 17:19:10 Jakieś podpowiedzi do tej funkcji, bo coś mi nie wychodzi, w sensie nie wiem jak wykorzystać to co przed chwilą zrobiłem. |
|
Gadziu Temat założony przez niniejszego użytkownika |
» 2013-05-14 19:49:10 Wymyśliłem takie coś, ale się wywala: double pole_okna( const okno & L, int jmax ) { double P; int k = 0; double a; while( jmax ) { jmax--; a = L[ jmax ]->pole(); P = P + L[ jmax ]->pole(); if( a <= L[ jmax ]->pole() ) k = jmax; } return P; } |
|
1 2 « 3 » 4 |