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

[C++] Lista jednokierunkowa + zwracanie kilku wartości przez funkcję

Ostatnio zmodyfikowano 2013-05-26 02:44
Autor Wiadomość
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:
C/C++
return P, jmax;
jmax musisz przekazać przez referencję, tak wynika z treśći zadania.
P-82931
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?

» KursyKurs STC kurs - xevuel
P-82932
Gadziu
Temat założony przez niniejszego użytkownika
» 2013-05-14 16:29:42
Tak może być?
C/C++
figura * operator []( int i ) const
{
    return r->dane;
}
int rozmiar() const
{
    return ile;
}
P-82934
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.
P-82936
Gadziu
Temat założony przez niniejszego użytkownika
» 2013-05-14 16:47:35
Teraz ok?
C/C++
figura * operator []( int i ) const
{
    el * p = r;
    int k = 0;
    while( k != i )
    {
        k++;
        p = p->nast;
    }
    return p->dane;
}
P-82937
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.
P-82938
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.
P-82940
Gadziu
Temat założony przez niniejszego użytkownika
» 2013-05-14 19:49:10
Wymyśliłem takie coś, ale się wywala:
C/C++
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;
}
P-82951
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona