24.10. Ponavljanje gradiva (zadaci)
Ideja za zadatak u kojem je korišćenje niza: Napisati aplikaciju u kojoj se unosi niz nekih brojeva koji nisu uređeni. Po želji, treba pronaći najveći, najmanji broj, sumu svih elemenata u nizu, prosečnu vrednost svih elemenata u nizu, sortirati niz u rastućem ili u opadajućem redosledu, kao i proveriti da li se u nizu nalazi neki element koji korisnik unese sa tastature. Poslednje opcija koja se korisniku daje je za kraj programa.
ZADATAK: (Korišćenje nizova)
U beskonačnoj petlji treba da se korisniku daje na izbor neki od sledećih izbora:
- unos novog niza (unosi se prvo broj elemenata niza, a zatim jedan po jedan element niza)
- traži najveći element niza (kao rezultat se prikazuje poruka koji element niza je najveći)
- traži najmanji element niza
- izračunaj sumu elemenata niza
- izračunaj prosečnu vrednost elemenata niza
- sortiraj niz u rastućem redosledu
- sortiraj niz u opadajućem redosledu
- izmeni element niza (tada se traži da korisnik unese koji po redu element niza treba izmeniti, i onda se traži da unese novu vrednost za taj element niza)
- traži element u nizu (traži se od korisnika da unese vrednost koja se traži, pa ako u nizu postoji element sa željenom vrednošću, onda da se ispiše poruka, kao npr "imamo taj element na poziciji xx", a ako u nizu nema taj element, onda da se ispiše druga poruka)
- izlazak iz programa (KRAJ?)
Nakon svake od izabranih stavki (sem poslednje) treba ispisati elemente niza na ekranu i vratiti se na glavni meni.
**** Svaki od izbora treba znati uraditi i kao funkciju koja se samo poziva iz izbornika.
Deo rešenja
class Program
{
static int[] niz = new int[0]; // novi niz, prazan, dummy, bez elemenata
static void ispisNiza() {
Console.Write("Elementi niza: ");
for (int i = 0; i < niz.Length; i++)
{
Console.Write(niz[i] + " ");
}
Console.WriteLine();
}
static void unosNiza()
{
Console.WriteLine("unesite broj elemenata niza: ");
int n = Convert.ToInt32(Console.ReadLine());
niz = new int[n];
Console.WriteLine("unesite elemenate niza (jedan ispod drugog): ");
for (int i = 0; i < niz.Length; i++)
{
niz[i] = Convert.ToInt32(Console.ReadLine());
}
}
static void najveci() {
if (niz.Length > 0)
{
int najveci = niz.Max();
Console.WriteLine("Najveći element niza je " + najveci);
}
else {
Console.WriteLine("Prvo unesite novi niz" );
}
}
static void najmanji()
{
if (niz.Length > 0)
{
Console.WriteLine("Namanji element niza je " + niz.Min());
}
else
{
Console.WriteLine("Prvo unesite novi niz");
}
}
static void izmena() {
if (niz.Length > 0)
{
int i;
do
{
Console.WriteLine("Broj elemenata niza je -> " + niz.Length);
Console.WriteLine("za koji indeks niza želite da promenite vrednost elementa niza?");
i = Convert.ToInt32(Console.ReadLine());
} while (i<0 || i>=niz.Length);
Console.WriteLine("unesi novu vrednost na tom indeksu:");
niz[i] = Convert.ToInt32(Console.ReadLine());
ispisNiza();
}
}
static void Main(string[] args)
{
int izbor;
while (true) // ovo je beskonačna petlja
{
Console.WriteLine("Odabetite opciju - šta da se radi: (unesite broj opcije)");
Console.WriteLine("1. unos novog niza");
Console.WriteLine("2. najveći element niza");
Console.WriteLine("3. najmanji element niza");
// ostale opcije kasnije
Console.WriteLine("8. izmena niza");
Console.WriteLine("9. da li ima elementa u nizu");
Console.WriteLine("0. KRAJ");
var odgovor = Console.ReadLine();
int.TryParse(odgovor, out izbor);
switch (izbor)
{
case 0: return;
case 1:
unosNiza(); // unos niza
ispisNiza(); // ispis
break;
case 2: najveci();
break;
case 3: najmanji();
break;
case 8:
izmena();
break;
case 9:
Console.WriteLine("unesite broj koji proveravate da li je u nizu:");
int broj = int.Parse(Console.ReadLine());
if (niz.Contains(broj))
{
Console.WriteLine("ima elementa u nizu, na indeksu " + Array.IndexOf(niz,broj));
}
else { Console.WriteLine("nema elementa u nizu"); }
break;
default:
break;
}
}
}
}
}
...
Ono što može da vam pomogne je činjenica da za rad sa nizovima, kao i za liste, u C#-u postoji dosta ugrađenih funkcija koje rade većinu posla za vas ! Na primer, za niz imate Sort, Reverse, Length ...