• dzanesko  
    Wydział: W-8 IZ
    Rok studiów: 4

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • witam. mam takie małe pytanie odnośnie kursu z algorytmów i struktur danych, takie zadanie:
    jest jakaś tam tablica ze studentami przetwarzana iteracyjnie i trzeba umożliwić na niej operacje dopisania studenta - no i mam taką małą metodę jednak nie wiem w czym tkwi błąd...
    kod:
    Kod:

    //public GrupaStudentow{
    //...
    public void dopisanieStudenta(IteratorFiltrujacy itab, int nr, String nazwisko, String imie, double ocena)
        {
            int licznik=0;
            for(itab.first(); !itab.isDone(); itab.next())
            {
                Student st = (Student)itab.current();
                licznik++;
            }
    //tworze nową tablice z kopią pierwszej tablicy i nowy obiekt student w ostatniej komórce
    //nowej tablicy obiektów
            Student s2[] = new Student[licznik+1];//nowa tabela licznik+1-elementowa
            for(int i=0; i<licznik; i++)
            s2[i]=s[i];
            s2[licznik]=new Student(int nr, String nazwisko, String imie, double ocena);//
            //tutaj kompilator zgłasza błąd
        }
    //public void main()...
    }
    d41d8cd98f00b204e9800998ecf8427e
  •  Lesmian  
    Wydział: W-8 IZ
    Rok studiów: 1

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • nowa tablica ma rozmiar taki sam jak stara. Licznik nie pokazuje rozmiaru starej tablicy tylko ilość jej elementów. Utwórz nową tablice nie poprzez new int[licznik+1] tylko przez new int[s.length+1]. Swoją drogą, jeśli ta metoda ma tylko dodawać nowego studenta, to po co jest ta pierwsza pętla? bo chyba nie po to, żeby ustawić licznik?

    Ostatnio zmieniony przez Lesmian 2010-05-13, 19:15, w całości zmieniany 1 raz 

    d41d8cd98f00b204e9800998ecf8427e
  • 0
  • cytuj |

  • Jeżeli ten iterator jest rzeczywiście filtrujący, to znaczy, że może po drodze pominąć kilka elementów, czyli drugą tablicę tworzysz zbyt małą, bo licznik nie zlicza wszystkich elementów.
    d41d8cd98f00b204e9800998ecf8427e
  • dzanesko  
    Wydział: W-8 IZ
    Rok studiów: 4

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • dzięki Panowie, problem rozwiązany
    PS.
    nowa tablica ma rozmiar taki sam jak stara+1. Licznik pokazuje rozmiar starej tablicy czyli ilość jej elementów.
    PS 2.
    akurat w tym przypadku iterator filtrujący bierze pod uwagę wszystkich studentów
    d41d8cd98f00b204e9800998ecf8427e

Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014
Strona wygenerowana w 21,8ms. Zapytań do SQL: 16