• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - Tablica obiektów

Object Storage Arubacloud
0 głosów
6,848 wizyt
pytanie zadane 20 lutego 2017 w C# przez makoszet Początkujący (360 p.)
Witajcie. Nie mogę rozgryźć pewnej rzeczy, otóż mam tablicę obiektów - ludzi, gdzie każdy element przechowuje dane takie jak nazwisko, wiek.

I tu prośba o jakieś sugestie, jak np. sprawdzić, który z nich jest najstarszy, a następnie zwrócić jego nazwisko.

Próbowałem różnych rzeczy, ale za każdym razem nie chce mi moich wypocin skompilować.

Nie proszę o rozwiązanie, tylko o nakierowanie.

1 odpowiedź

0 głosów
odpowiedź 20 lutego 2017 przez makoszet Początkujący (360 p.)
W sumie to prosiłbym też o dodatkowe wytłumaczenie jak to wygląda, otóż jak mamy normalną tablice typu int, np:

int tab = {1, 2, 3, 4};  // to tab[0] = 1 , tab[1] = 2, itd.

Ale w momencie gdy mamy właśnie tę tablice obiektów ze string nazwisko i int wiek

to tab[0] = będzie zwracać nazwisko i wiek?

Wiem że można też np. odwołać się tab[0].wiek  tylko dlaczego nie mogę go zapisać w zwykłym int'ie?
komentarz 20 lutego 2017 przez Przemek Gaduła (3,600 p.)
jeśli tab to tablica jakiś obiektów to tab[0] oznacza, że odwołujesz się do konkretnego obiektu. A co potem z tym obiektem zrobisz to twoja sprawa. Możesz właśnie po . odwołać się do jakiejś jego zmiennej( i możesz ją odczytać albo zmienić).
komentarz 20 lutego 2017 przez Przemek Gaduła (3,600 p.)
//...

ludzie[0].imie = "Janusz";
ludzie[0].wiek = 42;

//itd.

Console.WriteLine("Imie: " + ludzie[0].imie + " wiek:  " + ludzie[0].wiek);

//itd.

 

komentarz 20 lutego 2017 przez makoszet Początkujący (360 p.)
No dobra to rozumiem, ale gdy np. Chcę wyciągnąć kto ma więcej lat czyli

If (ludzie[0].wiek>ludzie[1].wiek) to już nie chce tego wykonać. Ktoś wytłumaczy czemu?
komentarz 20 lutego 2017 przez Przemek Gaduła (3,600 p.)
wklej ten kod z tym ifem, bo błąd może być w innym miejscu
komentarz 20 lutego 2017 przez makoszet Początkujący (360 p.)

Sorki, że dopiero teraz, ale jeszcze raz na chwilę do tego usiadłem. No niby teraz wyszło więc wczoraj coś musiałem sknocić. Pytanie teraz natomiast inne, jakieś propozycje na skrócenie tego kodu bo mam wrażenie, że jakoś naokoło podszedłem do tematu. W skrócie:

1) Pierwsza pętla for tworzenie nowych obiektów + metoda Read zapisująca te zmienne nazwisko, wiek dla danego elementu.

2) Zrobienie nowej tablicy lata[] do której wrzucam tylko wiek, sortuje i stąd wiem że ostatni to ten największy

3) Wiem który największy, więc odwołuje się jeszcze raz do mojej obiektowej tab. i wyciągam stamtąd nazwisko.

 

 

komentarz 21 lutego 2017 przez Przemek Gaduła (3,600 p.)

Ja bym to zrobił tak:

  • Stworzyć tablice z obiektami i wypełnić ją wynikami.
  • Stworzyć funkcje "Najstarszy", która wypisze wynik.
    • tablica jako parametr 
    • tworzysz pomocniczy obiekt
    • i w ciele funkcji iterujesz po tablicy
    • jeśli osoba jest starsza od poprzedniej to zastąp wartość pomocniczego obiektu
    • na końcu wypisz nazwisko/imię za pomocą tego pom obiektu 
komentarz 21 lutego 2017 przez makoszet Początkujący (360 p.)
To coś jak babelkowe sortowanie? Czy jakoś tak? :-D
1
komentarz 21 lutego 2017 przez Przemek Gaduła (3,600 p.)

Nie. Złożoność obliczeniowe będzie liniowa.

Bez żadnego sortowania, coś takiego:

//...
Pracownik p = pracownicy[0];
for(int i = 1; i < pracownicy.Lenght; i++)
    if(p.wiek < pracownicy[i].wiek)
        p = pracownicy[i];

// i potem wypisujesz tylko p.imie

 

Podobne pytania

0 głosów
2 odpowiedzi 1,332 wizyt
pytanie zadane 30 grudnia 2020 w C# przez j.cob_21 Początkujący (350 p.)
0 głosów
2 odpowiedzi 580 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez foruminfa Początkujący (310 p.)
0 głosów
1 odpowiedź 435 wizyt
pytanie zadane 31 stycznia 2018 w C# przez michal_borek Nowicjusz (210 p.)

92,565 zapytań

141,417 odpowiedzi

319,602 komentarzy

61,951 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...