12.10. REŠENI zadaci koji su bili za ocenu u prvoj grupi
ZADATAK 1 – Napisati aplikaciju u kojoj se koristi STACK:
1.
način: Konzolna aplikacija:
U MAGACIN se postavljaju spomenici koje su označeni brojevma:
1-kameni, 2-metalni, 3-betonski, 4-plastični.
Kreirati
aplikaciju u kojoj se ubacuju spomenici u magacin, a kasnije izbacuju
iz magacina:
U beskonačnoj petlji pitati korisnika da li će da ubaci
ili da izbaci spomenik iz magacina. Ako će da ga ubaci, odabrati
vrstu. Ako će da ga izbaci, treba da se ispiše vrsta spomenika koja
se dobija. Ako nema spomenika, a traži se da se izbaci jedan,
ispisati odgovarajuću poruku („prazan amagacin“).
Sve
se radi dok korisnik ne unese -1 za kraj programa
(KLIK za rešenje na kraju strane)
ZADATAK 2 – Napisati aplikaciju u kojoj se koristi
STACK:
2. Način: Windows Forms Application:
U MAGACIN se postavljaju spomenici koje su označeni brojevma:
1-kameni, 2-metalni, 3-betonski, 4-plastični.
Kreirati
aplikaciju u kojoj se ubacuju spomenici u magacin, a kasnije izbacuju
iz magacina i to na sledeći način:
Imate dugme za unos
spomenika i RadioButton-e za izbor vrste,
Imate dugme za
uzimanje spomenika i tada treba da „iskoči“ MessageBox sa
porukom koja je tipa „Spomenik koji ste dobili je metalni“
Imate
dugme za kraj programa
Kako radi program:
Pitati korisnika da li će da ubaci ili da izbaci spomenik iz magacina. Ako će da ga ubaci, odabrati vrstu spomenika. Ako će da ga izbaci, treba da se ispiše vrsta spomenika koja se dobija. Ako nema spomenika, a traži se da se izbaci jedan, ispisati odgovarajuću poruku („prazan amagacin“).
Sve se radi dok korisnik ne unese -1 za kraj programa
ZADATAK 3 – Napisati aplikaciju u kojoj se koristi QUEUE:
Napisati aplikaciju koja upravlja REDom čekanja dece u
redu za sladoled:
--- konzolna aplikacija ---
U
beskonačnoj petlji se treba birati da li dolazi novo dete u red ili
iz njega izlazi (dobilo je svoj sladoled).
Ako dolazi novo dete
u red, korisnik (vi) treba da ukuca ime deteta (neki string npr).
Ako
je dete dobilo sladoled, onda izlazi iz reda, i kao poruka se
ispisuje nešto tipa: „Dete koje je dobilo sladoled i više nije u
redu je Pera“ …
Ako se odabere da je dete dobilo sladoled, a
nema ni jednog u redu, onda treba ispisati adekvatnu poruku (tipa:
nema dece u redu)
Treći izbor koji se daje korisniku (vama, u onoj početnoj beskonačnoj petlji) je da završi rad na kraju smene.
(KLIK za rešenje na dnu strane)
ZADATAK 4 – Napisati aplikaciju u kojoj se koristi QUEUE:
Napisati aplikaciju koja upravlja REDom čekanja dece u
redu za sladoled:
--- WindowsForms Application ---
Na formi treba da su:
1 - tekstBox u koji se unosi ime deteta
2 - dugme za ubacivanje deteta u red
(ako se klikne na
dugme za ubacivanje deteta u red, a nije upisana oznaka u textBox–
prazan string ““ - da se ispiše poruka da treba prvo uneti ime
deteta)
3 - dugme za izbacivanje deteta iz reda – i tada treba
da se prikaže MessageBox sa porukom tipa: „Pera je upravo dobio
svoj sladoled“
4 - dugme za kraj rada prodavnice sladoleda
(exit ili kraj smene)
Kako radi program:
Treba birati da li
dolazi novo dete u red ili iz njega izlazi (dobilo je svoj
sladoled).
Ako dolazi novo dete u red, korisnik (vi) treba da
ukuca ime deteta (neki string npr).
Ako je dete dobilo sladoled,
onda izlazi iz reda, i kao poruka se ispisuje nešto tipa: „Dete
koje je dobilo sladoled i više nije u redu je Pera“ …
Ako
se odabere da je dete dobilo sladoled, a nema ni jednog u redu, onda
treba ispisati adekvatnu poruku (tipa: nema dece u redu)
Treći izbor koji se daje korisniku (vama, u onoj početnoj beskonačnoj petlji) je da završi rad na kraju smene.
(KLIK za rešenje na dnu strane)
ZADATAK 5: Korišćenjem liste (LIST) napisati aplikaciju: kojom se u biblioteku dodaju ili uzimaju knjige.
Struktura KNJIGA u sebi treba da ima NazivKnjige, Autor, GodinaIzdanja
Treba da se koristi lista knjiga u biblioteci. .
Treba nam aplikacija pomoću koje ćemo moći da unosimo podatke o svakj knjizi i da to ubacujemo u listu knjiga u biblioteci. Ako se knjiga uzme, onda je treba izbaciti iz liste.
– Konzolna aplikacija: --
U beskonačnoj petlji
korisniku (admin) se daje na izbor:
- unos knjige
- broj
knjiga u biblioteci
- iznos knjige
- kraj
Ako je
u pitanju unos knjige, treba da se traži da se unese naziv knjige,
autor i godina izdanja. To se sve smešta na kraj liste.
Ako je
u pitanju iznos knjige, traži se da korisnik unese naziv knjige koji
se uklanja iz liste, ako postoji u listi, sa porukom tipa: „uspela
akcija – uzeli ste knjigu Odiseja“. Međutim, ako se ne pronađe
knjiga sa traženim nazivom, korisnik treba da može da bira da li će
da pokuša ponovo ili da se vrati na glavni meni.
Rešenja:
Zadatak 1 : Magacin
Ovaj zadatak može da se reši na mnogo načina, ovo je samo jedan od načina, u kojem je izvršena i obrada izuzetaka (reakcija koja će da se desi ako korisnik ukuca neku glupost).
U ovom rešenju je za svaki podzadatak napravljena posebna metoda - jedna za ubacivanje novog spomenika u magacin, i druga za dobijanje spomenika iz magacina.
Jedno od mogućih rešenja je da se izbor radi u posebnoj metodi koja vraća izabrani broj:
static int izbornik()
{
int izbor = 0;
Console.WriteLine("\n IZBORNIK (unesite broj 1, 2, 3, 4 ili -1):");
Console.WriteLine("\n 0 - ubacivanje novog spomenika u magacin");
Console.WriteLine("\n 1 - izbacivanje poslednjeg spomenika iz magacina");
Console.WriteLine("\n za KRAJ vam treba -1");
try
{
izbor = Convert.ToInt32(Console.ReadLine());
}
catch (Exception e)
{
Console.WriteLine("Niste uneli dobar broj ! Greška je: ");
Console.WriteLine(e.Message);
Console.WriteLine("Pokušajte ponovo...");
}
return izbor;
}
Za unos i iznos spomenika imamo posebne metode:
public static Stack<int> magacin = new Stack<int>();
static void ubaciSpomenik()
{
int izbor2 = 0;
Console.WriteLine("\n IZBORNIK (za vrstu spomenika unesite broj 1, 2, 3, 4):");
Console.WriteLine("\n 1 - kameni");
Console.WriteLine("\n 2 - metalni");
Console.WriteLine("\n 3 - betonski");
Console.WriteLine("\n 4 - plastični");
try
{
izbor2 = Convert.ToInt32(Console.ReadLine());
}
catch (Exception e)
{
Console.WriteLine("\n Niste uneli dobar broj ! Greška je: ");
Console.WriteLine(e.Message);
Console.WriteLine("\n Pokušajte ponovo...");
}
if (izbor2 < 1 || izbor2 > 4)
Console.WriteLine("pogrešan izbor");
else
magacin.Push(izbor2);
}
static void izbaciSpomenik()
{
int izbor3 = 0;
if (magacin.Count > 0)
izbor3 = magacin.Pop();
else
Console.WriteLine("\n Nema ništa u magacinu ! \n ");
switch (izbor3)
{
case 1:
Console.WriteLine("\n Dobili ste kameni spomenik");
break;
case 2:
Console.WriteLine("\n Dobili ste METALNI spomenik");
break;
case 3:
Console.WriteLine("\n Dobili ste BETONSKI spomenik");
break;
case 4:
Console.WriteLine("\n Dobili ste PLASTIČNI spomenik");
break;
}
}
U glavnom programu se vrti izbornik koji traži da se unese izbor ili za jedno ili za drugo ili za kraj.
Glavna metoda, u kojoj je beskonačna petlja bi mogla da bude ovakva:
static void Main(string[] args)
{
int izbor;
do
{
izbor = izbornik();
switch(izbor)
{
case -1:
break;
case 0:
ubaciSpomenik();
break;
case 1:
izbaciSpomenik();
break;
default:
Console.WriteLine("Niste uneli dobar broj. Pokušajte ponovo :");
break;
}
} while (izbor != -1);
Console.ReadKey();
}
Sada, razmislite, da li je moralo da se koristi ovakvo rešenje?
Naravno da nije. Svaki switch...case blok je mogao da bude urađen pomoću if...else.
Ako niste ambiciozni, mogli ste da ne koristite try...catch blok za obradu izuzetaka, mada u tom slučaju vaš program ne bi bio otporan na korisničke greške, mada bi program bio i značajno kraći.
Isto tako, ne moraju se koristiti posebne metode za unos i iznos spomenika iz magacina, sve je moglo da bude unutar glavne metode (Main) - to ne utiče na ocenu, ali je program tada teže čitljiv i lakše ja da dođe do grešaka.
NAPOMENA: u ovom rešenju nije korišćena prava beskonačna petlja - pogledaje kako se to radi u rešenju koje je postavljano za poslednji zadatak - skroz na kraju strane
(Povratak na vrh strane)
ZADATAK 2 - Magacin
U pitanju je Windows Forms Application. Može da se uradi na gomilu načina. U nastavku je jedan od predloga kako da se to uradi:
Izgled forme:

Kako je to zamišljeno u ovom rešenju:
Na početku je kreiran stek pod nazivom magacin:
...
public partial class Form1 : Form
{
public static Stack<string> magacin = new Stack<string>();
public Form1()
.....
1. dugme na kojem piše "NOVI SPOMENIK" će samo da se pobrine da panel postane vidljiv
panel1.Show();
2. Imamo panel na kojem se nalaze Radio dugmad za izbor vrste spomenika, kao i dugme za unos. Taj panel nije vidljiv na početku rada programa (može da se podesi u Properties, ili programski)
3. dugme, koje se nalazi na panelu, i na kojem piše "unesi novi spomenik" - će da se pobrine da se izabrani spomenik ubaci u magacin, pomoću naredbe push:
private void btnUnesi_Click(object sender, EventArgs e)U ovom rešenju je postavljena provera da ako se desi da se ništa ne izabere, da se ispiše poruka, kao i da se ukloni izbor, tako da se svaki put pojavljuju radio dugmad bez ijednog čekiranog izbora.
{
bool prazno = false;
if (rbKameni.Checked) magacin.Push("KAMENI");
if (rbMetalni.Checked) magacin.Push("METALNI");
if (rbBetonski.Checked) magacin.Push("BETONSKI");
if (rbPlasticni.Checked) magacin.Push("PLASTIČNI");
prazno = !rbBetonski.Checked && !rbKameni.Checked && !rbMetalni.Checked && !rbPlasticni.Checked;
if (prazno)
MessageBox.Show("molim odaberite neku od opcija ");
panel1.Hide();
rbPlasticni.Checked = false;
rbMetalni.Checked = false;
rbKameni.Checked = false;
rbBetonski.Checked = false;
}
Jedan od načina koji se često koristi je da se prilikom poziva, namerno postavi da je čekiran prvi od radio dugmadi.
Isto tako, može ostati i izbor od ranije , i tada se koriste samo ona prve 4 if naredbe .... izbor je vaš ...
4. dugme, na kojem piše "Daj spomenik sa kraja" - služi da iz magacina uzmemo spomenik sa kraja. Ispiše se popup poruka koji spomenik ste dobili, a ako više nema spomenika u magacinu, ispiše se da je magacin prazan:
if (magacin.Count > 0)
{
string brSpomenika = magacin.Pop();
MessageBox.Show("dobili ste " + brSpomenika + " spomenik ");
}
else
{
MessageBox.Show("Magacin je PRAZAN !");
}
5. dugme je za kraj:
this.Close();
***
Da li je ovo moglo da se uradi drugačije?
Naravno da jeste.
Moglo e da se radi sa tri forme: jedna za izbor radnje i jedna za unos novog spomenika, jedna za ispis šta ste dobili (bez MessageBox-a)
Moglo je da se radi na jednoj formi, bez panela, i da je sve stalno vidljivo, ... izbor je vaš
ZADATAK 3 - RED za sladoled
- konzolna aplikacija -
Nadam se da ste pročitali kako je rađen prvi zadatak, pošto će i ovo biti malo slično:
U glavnoj metodi postavljam beskonačnu petlju, u kojoj se od korisnika (radnik u poslastičarnici) traži da formira red od dece koja su došla da kupe sladoled. Dete koje je prvo došlo treba i da bude prvo usluženo.
To nam govori da nam treba FIFO (First In First Out), a to je red (Queue).
Ono što je potrebno uraditi da bi sve to radilo je:
prvo se kreira red čekanja dece, na početku, van metode ( nije u Main-u !).
public static Queue<string> RedZaSladoled = new Queue<string>();
Zatim je u ovom slučaju kreirana posebna metoda u kojoj se traži od korisnika da unese jedno slovo.
Ono što je ovde urađeno je da se unese ceo string - cela linija, ali se uzima samo prvo slovo onoga što je uneseno.
static char izbornik()
{
Console.WriteLine("\n ****************************************");
Console.WriteLine("\n IZBOR opcija koje imate (+, -, k):");
Console.WriteLine("\n + za: dolazi novo dete na kraj reda");
Console.WriteLine("\n - za: dete usluženo i izlazi iz reda");
Console.WriteLine("\n k za: KRAJ radnog vremena poslastičarnice");
string izbor = Console.ReadLine();
return izbor[0];
}
Zatim metode za ubacivanje deteta u red i za izbacivanje deteta iz reda:
static void dodajNaKrajReda()
{
Console.WriteLine("\n Unesite ime deteta koje staje u red : ");
string d = Console.ReadLine();
RedZaSladoled.Enqueue(d);
}
static void izbaciIzReda()
{
string d = "";
if (RedZaSladoled.Count > 0)
{
d = RedZaSladoled.Dequeue();
Console.WriteLine(d + " izlazi iz reda :) ");
}
else
Console.WriteLine("\n Nema niko da čeka u redu ! \n ");
}
U metodi koja ubacuje dete u red prvo se korisniku šalje poruka kojom se traži da se unese ime deteta koje je došlo sledeće. To je praksa kojom se označava šta se od korisnika traži. Ne možete da pretpostavite da korisnik zna šta treba da se u kom momentu unese u program!
U metodi koja služi za izbacivanje deteta iz reda urađeno je da se ispiše ime deteta koje izlazi iz reda, a ako nema dece u redu, da se ispiše poruka o tome.
I, na kraju, u glavnoj metodi treba da "trči" beskonačna petlja: od korisnika se traži ili da dodaju dete u red, ili da izbace dete iz reda ili da završe sa poslom:
Dokle god se ne pritisne opcija za kraj, treba da se ispisuje poruka u kojoj se od korisnika traži da odabere nešto.
Pošto u zadatku nije navedeno šta korisnik treba da bira, sada biramo znakove + za dodavanje deteta u red, - za uklanjanje deteta iz reda, k za kraj:
static void Main(string[] args)Da li je ovo moglo da se uradi drugačije?
{
char izbor;
do
{
izbor = izbornik();
switch(izbor)
{
case 'k':
break;
case '+':
dodajNaKrajReda();
break;
case '-':
izbaciIzReda();
break;
default:
Console.WriteLine("\n Niste uneli šta treba. Pokušajte ponovo : \n");
break;
}
} while (izbor != 'k');
Console.ReadKey();
}
Jeste. Kraće? Moglo je. Ovo je samo jedan od načina na koji je mogao da se uradi zadatak.
Moglo je i bez posebnih metoda, ali tada dobijate kod koji je manje čitljiv.
Moglo ja umesto switch...case da se koristi if...
Moglo je da se kao izbor unose brojevi ili cele reči ... izbor je na vama ...
NAPOMENA: u ovom rešenju
nije korišćena prava beskonačna petlja - pogledaje kako se to radi u
rešenju koje je postavljano za poslednji zadatak - skroz na kraju strane
ZADATAK 4 - RED za sladoled
- Windows Forms Application -
Zadatak treba da radi tako što se u red postavljaju deca redom kojim stižu. Dete koje je prvo stiglo, treba da je i prvo usluženo. Iz toga vidimo da nam treba nešto što je FIFO (Fires In First Out) - a to je red (Queue).
U zadatku je traženo da na formi imamo tekstBox za unos imena dece koja dolaze u red, i još 3 dugmeta (Button) - za ubacivanje deteta u red, izbacivanje deteta iz reda, i za kraj.
Zadatak ne specificira na koji način će da se prikaže koje dete je stiglo na red da dobije sladoled, pa da izađe iz reda. U ovom rešenju koristimo Label-u. Pogledajte kako može da izgleda forma:

Na početku, pre svega, kreiramo red:
public static Queue<string> RedZaSladoled = new Queue<string>();
Za pojedine dugmiće pišemo kod koji se izvršava prilikom klika na dugme:
Prilikom klika na dugme za unos dece u red:
private void btnUbaci_Click(object sender, EventArgs e)
{
string d = tbImeDeteta.Text;
RedZaSladoled.Enqueue(d);
tbImeDeteta.Clear();
lblPoruka.Text = RedZaSladoled.Count + " u redu čeka ...";
}
Kada se klikne na dugme za ubacivanej deteta u red, tekst koji je u textBox-u se ubacuje u red. Zatim se očisti sadržaj TextBox-a da se ne bi unelo isto dete dvaput u red. U labeli na dnu se ispisuje koliko dece ćeka u redu.
Ovde nije proveravano da li je korisnik išta upisao u TextBox.
( Vama ostaje da razmislite kako ćete doskočiti onima koji bi kao imena dece da upišu prazan string. Ako bude problem, pošaljite poruku, pa ćemo i to pokazati na primeru ... )
Klik na dugme za izbacivanje dece iz reda:
private void btnIzbaci_Click(object sender, EventArgs e)
{
if (RedZaSladoled.Count > 0)
{
string d = RedZaSladoled.Dequeue();
lblPoruka.Text = d + " izlazi iz reda :) ";
}
else
lblPoruka.Text="\n Nema niko da čeka u redu ! \n ";
}
Ovde je jasno iz koda da se izbacuje iz reda jedan član - onaj koji je na početku reda. U labeli na dnu se ispisuje koje je to dete dobilo sladoled i izašlo iz reda. Ako nema nikoga u redu onda se ispisuje odgovarajuća poruka.
Za klik na dugme za kraj nema potrebe z aobjašnjenje - kod sve govori:
private void btnKraj_Click(object sender, EventArgs e)
{
this.Close();
}
ZADATAK 5:lista knjiga u biblioteci
- konzolna aplikacija -
Ovde je u zadatku naglašeno da se koristi struktura knjiga, sa datim delovima strukture:
struct knjiga
{
internal string NazivKnjige;
internal string Autor;
internal int GodinaIzdanja;
}
( Za promenu, koristimo modifikator pristupa internal - vidljivo unutar programa...)
Nakon toga kreiramo listu knjiga koju nazivamo Biblioteka:
static List<knjiga> Biblioteka = new List<knjiga>();
Za unos knjige u biblioteku može da se koristi posebna metoda:
static void unosKnjige()
{
knjiga NovaKnjiga = new knjiga(); /* kreiramo promenljivu tipa knjiga */
/* traži se od korisnika da unese naziv knjige: */
Console.WriteLine("\n Unesite naziv nove knjige : ");
string naziv = Console.ReadLine(); /* šta se unese ubacuje se u promenljivu */
NovaKnjiga.NazivKnjige = naziv; /* a iz promenljive u novu knjigu */
/* zatim se traži da unese autora */
Console.WriteLine("\n Unesite autora knjige : ");
string autor = Console.ReadLine();
NovaKnjiga.Autor = autor;
/* zatim se traži da se unese godina izdanja */
Console.WriteLine("\n Unesite datum izdanja knjige : ");
int datum = Convert.ToInt32(Console.ReadLine());
NovaKnjiga.GodinaIzdanja = datum;
/* na kraju se tako formirana knjiga ubacije u listu : */
Biblioteka.Add(NovaKnjiga);
}
Ovde je u komentarima objašnjeno šta i kako radi. Tako bi trebalo da učenici pišu komentare u svoj kod, da bi onaj ko to čita znao šta su nameravali da urade.
Znači: Napravi se nova, lokalna, promenljiva: NovaKnjiga. Od korisnika se traže podaci koji su potrebni (naziv knjige, autor, godina izdanja). To se ubaci u strukturu NovaKnjiga. Na kraju se ta NovaKnjiga ubacuje u listu elemenata i to na kraj. (Možete ubaciti gde hoćete ako nije drugačije traženo u zadatku.)
Za izbacivanje knjige iz biblioteke se takođe može koristiti posebna metoda:
static void iznosKnjige()
{
knjiga jednaKnjiga;
bool uklonjeno = false;
string ponovo = null;
do
{
/* ako nema knjiga u biblioteci nema smisla da idemo dalje odavde
- return - služi da izađemo iz metode! */
if (Biblioteka.Count == 0)
{
Console.WriteLine("\n Nema knjiga u biblioteci ! \n ");
return;
}
Console.WriteLine("\n Unesite naziv knjige koju želite da uzmete: ");
string naziv = Console.ReadLine();
for (int i = 0; i < Biblioteka.Count; i++)
{
jednaKnjiga = Biblioteka[i];
if (jednaKnjiga.NazivKnjige == naziv)
{
Biblioteka.RemoveAt(i);
Console.Write("\n uklonili ste knjigu " + naziv + " autora " + jednaKnjiga.Autor);
Console.Write( " izdatu godine " + jednaKnjiga.GodinaIzdanja);
uklonjeno = true;
}
}
if (uklonjeno == false)
{
Console.WriteLine("\n NEMA takve knjige u biblioteci \n");
Console.WriteLine("\n \n Želite li da pokušate ponovo (da/ne)");
ponovo = Console.ReadLine();
}
} while (ponovo == "da"); /* ponavlja se ako nismo našli knjigu i želimo da pokušamo ponovo */
}
Ovde se prvo proverava ima li uopšte knjiga u biblioteci, pa ako nema, pošalje se odgovarajuća poruka i izađe iz metode pomoću naredbe return. (Da se podsetimo: naredba return može da se nalazi bilo gde u metodi i na više mesta, a metoda će da se završi prilikom prvog nailaska na nju) - ne bi uticalo na ocenu ako vam ovo nije palo na pamet ...
Zatim se od korisnika traži da unese naziv knjige koja se uklanja: pomoću for petlje se prolazi kroz celu listu i uklanja svaka knjiga sa tim nazivom.
POšto je u zadatku traženo da se prilikom neuspešnog uklanjanja knjige može odabrati ponovo da se radi isto, ovde je upotrebljena pomoćna promenljiva uklonjeno koja se postavlja na true samo ako je bilo uklanjanja iz liste. Ako nije bilo uklanjanja iz liste, tada se korisnik pita da li želi da ponovi postupak. Korisnikov odgovor se smešta u drugu pomoćnu promenljivu, koja je ovde nazvana ponovo.
Ovde je potrebljena do...while petlja, za ponavljanje samo ako korisnik ne nađe knjigu koju hoće da izbaci i hoće da pokuša ponovo !
Početni izbor za korisnika je u ovom rešenju smešten u glavni metod:
static void Main(string[] args)
{
ConsoleKeyInfo taster;
char izbor;
bool kraj = false;
do
{
Console.WriteLine("\n ****************************************");
Console.WriteLine("\n IZBOR opcija koje imate:");
Console.WriteLine("\n U ili u - za unos knjiga u biblioteku");
Console.WriteLine("\n B ili b - za broj knjiga u biblioteci");
Console.WriteLine("\n I ili i - za izbacivanje knjige iz biblioteke");
Console.WriteLine("\n K ili k - za KRAJ radnog vremena (kraj programa)");
Console.Write("\n *** Pritisnite odgovarajući taster za vaš izbor -> ");
taster = Console.ReadKey();
izbor = taster.KeyChar;
switch (izbor)
{
case 'K':
case 'k':
kraj = true;
break;
case 'U':
case 'u':
unosKnjige();
break;
case 'I':
case 'i':
iznosKnjige();
break;
case 'B':
case 'b':
Console.WriteLine("\n \n ima " + Biblioteka.Count + " knjiga u biblioteci");
break;
default:
Console.WriteLine(" \n \n Niste uneli pravo slovo! \n Pokušajte ponovo :\n");
break;
}
if(kraj) break;
} while (true);
Console.ReadKey();
}
U ovom slučaju se koristi do...while petlja - koja ovde JESTE BESKONAČNA PETLJA - izvršava se sve dok je logička promenljiva kraj na false: ta promenljiva se ovde postavlja na true samo ako se odabere ili slovo k ili K. - Ako se desi da se ta promenljiva postavi na true, tada će se pomoću naredbe if (kraj) break; izaći iz while petlje!
Za ispis izbora za korisnika se jasno vidi šta se radi. Elegantnije rešenje bi bilo da se i za to koristi posebna metoda - tada bi glavna metoda bila znatno preglednija.
U ovom rešenju se, za promenu, za izbor opcije koristi ReadKey() - da se ne kuca više od jednog znaka sa tastature.
Moglo je da se uradi na gomilu mogućih načina, i kraće i duže. Ovo je samo jedno od mogućih rešenja. Pročitajte predložena rešenja i za ostale zadatke .