Dodatak za rad kod kuće - Kombinovanje ENUM i STRUCT
Teorija: Kombinovanje enum i struct
Nabrojivi i strukturni tip mogu se koristiti zajedno.
Na primer, struktura može sadržati član koji je tipa
enum.Tako se u okviru jednog složenog podatka mogu čuvati različite informacije:
tekstualni podaci;
numerički podaci;
podaci nabrojivog tipa.
Ovakav način organizovanja podataka omogućava preglednije predstavljanje stvarnih objekata i njihovih osobina.
Zadatak 1 – Evidencija učenika – Napraviti program koji čuva podatke o učenicima. Svaki učenik treba da ima: ime, prezime, godinu rođenja, prosečnu ocenu, smer koji pohađa. Smer će biti definisan pomoću enum tipa.
Postupak izrade
Korak 1 – Definisanje nabrojivog tipa
enum Smer
{
Racunarski,
Elektrotehnicki,
Masinski
}
Korak 2 – Definisanje strukture
struct Ucenik
{
public string ime;
public string prezime;
public int godinaRodjenja;
public double prosek;
public Smer smer;
}
Korak 3 – Kreiranje niza učenika
Ucenik[] ucenici = new Ucenik[3];
Korak 4 – Dodeljivanje vrednosti
ucenici[0].ime = "Marko";
ucenici[0].prezime = "Markovic";
ucenici[0].godinaRodjenja = 2008;
ucenici[0].prosek = 4.25;
ucenici[0].smer = Smer.Racunarski;
ucenici[1].ime = "Ana";
ucenici[1].prezime = "Petrovic";
ucenici[1].godinaRodjenja = 2007;
ucenici[1].prosek = 4.80;
ucenici[1].smer = Smer.Elektrotehnicki;
ucenici[2].ime = "Petar";
ucenici[2].prezime = "Jovanovic";
ucenici[2].godinaRodjenja = 2008;
ucenici[2].prosek = 3.75;
ucenici[2].smer = Smer.Masinski;
Korak 5 – Prikazivanje podataka
for (int i = 0; i < ucenici.Length; i++)
{
Console.WriteLine("Ucenik: " +
ucenici[i].ime + " " + ucenici[i].prezime);
Console.WriteLine("Godina rodjenja: " +
ucenici[i].godinaRodjenja);
Console.WriteLine("Prosek: " +
ucenici[i].prosek);
Console.WriteLine("Smer: " +
ucenici[i].smer);
Console.WriteLine("--------------------");
}
Proširenje programa – Pretraga učenika – dodati mogućnost pronalaženja učenika prema prezimenu. Rešenje
Console.Write("Unesite prezime za pretragu: ");
string trazenoPrezime = Console.ReadLine();
bool pronadjen = false;
for (int i = 0; i < ucenici.Length; i++)
{
if (ucenici[i].prezime == trazenoPrezime)
{
Console.WriteLine("Pronadjen ucenik:");
Console.WriteLine(ucenici[i].ime + " " + ucenici[i].prezime);
Console.WriteLine("Prosek: " + ucenici[i].prosek);
Console.WriteLine("Smer: " + ucenici[i].smer);
pronadjen = true;
}
}
if (pronadjen == false)
{
Console.WriteLine("Ucenik nije pronadjen.");
}
Ovim zadatkom učenici ponavljaju: nizove, for petlju, if naredbu, poređenje string vrednosti, logički tip bool, rad sa strukturama i nabrojivim tipovima.
Dodatni zadaci
Zadatak A – Prikaz učenika određenog smera: Prikazati samo učenike koji pohađaju računarski smer.
Zadatak B – Najbolji učenik: Pronaći učenika sa najvećim prosekom.
Zadatak C – Brojanje učenika: Izračunati koliko učenika pohađa svaki smer.
Zadatak D – Prosečna ocena odeljenja: Izračunati prosečnu ocenu svih učenika.
int indeks = 0;
for (int i = 1; i < ucenici.Length; i++)
{
if (ucenici[i].prosek > ucenici[indeks].prosek)
{
indeks = i;
}
}
Console.WriteLine("Najbolji ucenik je: " +
ucenici[indeks].ime + " " +
ucenici[indeks].prezime);
Console.WriteLine("Prosek: " +
ucenici[indeks].prosek);
Još jedan zadatak za vežbu
Napraviti konzolnu aplikaciju koja predstavlja evidenciju knjiga u maloj biblioteci.
Definisati nabrojivi tip VrstaKnjige sa vrednostima: Roman, Strucna, Istorijska, Decija.
Definisati strukturu Knjiga sa članovima: naslov (string), autor (string), broj stranica (int), cena (double), vrsta (VrstaKnjige).
U programu:
-
Kreirati niz od tri knjige.
-
Dodeliti vrednosti svim članovima.
-
Prikazati podatke o svim knjigama.
-
Prikazati samo knjige određene vrste.
-
Pronaći knjigu sa najvećim brojem stranica.
Dodatni zadatak: Omogućiti korisniku da unese naziv knjige i proveriti da li se ona nalazi u nizu.
...