Tekst Zadatka 4:

U beskonačnoj petlji treba da se korisniku daje na izbor neki od sledećih izbora:

  •  unos elemenata 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)
  •  sortiraj niz u rastućem redosledu
  •  ispis elemenata niza
  • izlazak iz programa (KRAJ?)

Nakon svake od izabranih stavki (sem poslednje) treba ispisati elemente niza na ekranu i vratiti se na glavni meni.

Za ocenu 5: Svaki od izbora uraditi kao funkciju koja se samo poziva iz izbornika.

U nastavku su 3 različita rešenja istog zadatka:

Prvo: sa metodama koje se pozivaju po potrebi, koristi se while beskonačna petlja, i izbor se radi pomoću if ...

Drugo: bez većine metoda, mada i dalje koristim metodu za ispis elemenata niza zbog značajnog skraćivanja programskog koda

Treće: umesto if, se za izbor koristi switch...case

Vi možete koristiti drugu vrstu beskonačne petlje, ili možete koristiti izbor pomoću switch...case i pozivanje metoda, .. ili možete umesto slova koristiti brojeve, .. ili umesto Console.Readline() kojom se čita ceo red, možete koristiti Console.ReadKey() kojim se čita samo jedan znak, .... Ima toliko mogućih načina da se reši zadatak, da je skoro nemoguće da dva učenika zadatak urade na isti način ...

Rešenje, u kojem se koriste posebne metode koje pozivamo po potrebi :

using System;
using System.Collections.Generic;
using System.Linq;

namespace aplikacija
{

class Program
{
static char izborZaKorisnika() /* izbor koji se prikazuje korisniku - urađen kao posebna metoda */
{
string izbor = "o";
Console.WriteLine("\n Izaberite OPCIJU koju želite da radite: ");
Console.WriteLine("\n 1 - unos elemenata novog niza");
Console.WriteLine("\n 2 - traži najveći element niza");
Console.WriteLine("\n 3 - sortiranje niza u rastućem redosledu");
Console.WriteLine("\n 4 - ispis elemenata niza");
Console.WriteLine("\n 5 - KRAJ \n");

izbor = Console.ReadLine();

return izbor[0];
}

static void unosNiza(int[] niz) /* metoda za unos elemenata niza */
{
for(int i=0; i< niz.Length;i++)
{
Console.WriteLine("U narednom redu unesite element niza sa indeksom " + i );
niz[i] = Convert.ToInt32(Console.ReadLine());
}

ispisNiza(niz);
}

static void maxNiza(int[] nizz) /* metoda za traženje najvežeg elementa niza */
{
Console.WriteLine("\n Najveci element niza je " + nizz.Max());

}

static void ispisNiza(int [] niiz) /* metoda za ispis niza */
{
Console.WriteLine(" elementi niza, jedan iza drugog, su: \n");
for (int i = 0; i < niiz.Length; i++)
Console.Write(" " + niiz[i]);
Console.WriteLine();
}

static void sortNiza(int[] niz) /* metoda za sortiranje niza */
{
Array.Sort(niz);
Console.Write("\n Nakon sortiranja ");
ispisNiza(niz);
}

static int unosBrojaElemenataNiza() /* metoda za unos broja elemenata niza - kao rezultat daje jedan ceo broj */
{
int broj;

do /* ovo se može koristiti da korisnik ne bi uneo negativan broj */
{
Console.WriteLine("\n Unesite koliko elemenata ima u nizu \n");
broj = Convert.ToInt32(Console.ReadLine());

if (broj <= 0) Console.WriteLine("molim unesite dobar broj elemenata niza (pozitivan ceo broj) : ");
} while (broj <= 0);

return broj;
}

static void Main(string[] args) /* glavna metoda - odavde sve kreće */
{

char mojIzbor;
int[] mojNiz;

Console.WriteLine("\n Prvo unesite jedan niz, jer inače nema smisla raditi dalje: ");

mojNiz = new int[unosBrojaElemenataNiza()];

unosNiza(mojNiz);

while (true) /* beskonačna petlja u kojoj se u nedogled ponavlja izbor, sve dok se ne odabere 5 */
{

mojIzbor = izborZaKorisnika(); /* poziv metode koja ispisuje izbor i vraća jedno slovo */

if (mojIzbor == '1') /* ako je izbor 1, pravimo novi niz, ali sa novim brojem elemenata */
{ /* poziv metode može da bude parametar, ako vraća vrednost odgovarajućeg tipa */
mojNiz = new int[unosBrojaElemenataNiza()]; /* prvo kreiramo niz sa zadatim brojem elemenata */
unosNiza(mojNiz); /* a onda unesemo elemente u njega */
}

if (mojIzbor == '2') maxNiza(mojNiz); /* poziv metode za traženje najvećeg elementa niza */
if (mojIzbor == '3') sortNiza(mojNiz); /* poziv metode za sortiranje niza */
if (mojIzbor == '4') ispisNiza(mojNiz); /* poziv metode za ispis niza */
if (mojIzbor == '5') return; /* izlazak iz programa */
}
}
}
}

Rešenje u kojem se NE koriste posebne metode za pojedine stvari:

(mada i ovde koristim metodu za ispis niza - da skratim kod)

using System;
using System.Collections.Generic;
using System.Linq;

namespace aplikacija
{
class Program
{
static void ispisNiza(int [] niiz)
{
Console.WriteLine(" elementi niza, jedan iza drugog, su: \n");
for (int i = 0; i < niiz.Length; i++)
Console.Write(" " + niiz[i]);
Console.WriteLine();
}

static void Main(string[] args)
{
string izbor;
char mojIzbor='0';
int[] mojNiz;
int n; /* za broj elemenata niza */

Console.WriteLine("\n Prvo unesite jedan niz, jer inače nema smisla raditi dalje: ");

Console.WriteLine("\n Unesite koliko elemenata ima u nizu \n");
n = Convert.ToInt32(Console.ReadLine());
mojNiz = new int[n];

for (int i = 0; i < mojNiz.Length; i++)
{
Console.WriteLine("U narednom redu unesite element niza sa indeksom " + i);
mojNiz[i] = Convert.ToInt32(Console.ReadLine());
}

while (true)
{
Console.WriteLine("\n Izaberite OPCIJU koju želite da radite: ");
Console.WriteLine("\n 1 - unos elemenata novog niza");
Console.WriteLine("\n 2 - traži najveći element niza");
Console.WriteLine("\n 3 - sortiranje niza u rastućem redosledu");
Console.WriteLine("\n 4 - ispis elemenata niza");
Console.WriteLine("\n 5 - KRAJ \n");

izbor = Console.ReadLine();

mojIzbor = izbor[0]; /* prvo slovo nas samo interesuje */

if (mojIzbor == '1')
{
Console.WriteLine("\n Unesite koliko elemenata ima u nizu \n");
n = Convert.ToInt32(Console.ReadLine());
mojNiz = new int[n];

for (int i = 0; i < mojNiz.Length; i++)
{
Console.WriteLine("U narednom redu unesite element niza sa indeksom " + i);
mojNiz[i] = Convert.ToInt32(Console.ReadLine());
}

ispisNiza(mojNiz);
}

if (mojIzbor == '2')
{
Console.WriteLine("\n Najveci element niza je " + mojNiz.Max());
}


if (mojIzbor == '3')
{
Array.Sort(mojNiz);
Console.Write("Nakon sortiranja: ");
ispisNiza(mojNiz);
}

if (mojIzbor == '4') ispisNiza(mojNiz);
if (mojIzbor == '5') return;
}
}
}
}

Ako umesto if... želite da koristite switch...case:

using System;
using System.Collections.Generic;
using System.Linq;

namespace aplikacija
{
class Program
{
static void ispisNiza(int [] niiz)
{
Console.WriteLine(" elementi niza, jedan iza drugog, su: \n");
for (int i = 0; i < niiz.Length; i++)
Console.Write(" " + niiz[i]);
Console.WriteLine();
}

static void Main(string[] args)
{
string izbor;
char mojIzbor='0';
int[] mojNiz = null;
int n; /* za broj elemenata niza */

while (true)
{
Console.WriteLine("\n Izaberite OPCIJU koju želite da radite: ");
Console.WriteLine("\n 1 - unos elemenata novog niza");
Console.WriteLine("\n 2 - traži najveći element niza");
Console.WriteLine("\n 3 - sortiranje niza u rastućem redosledu");
Console.WriteLine("\n 4 - ispis elemenata niza");
Console.WriteLine("\n 5 - KRAJ \n");

izbor = Console.ReadLine();

mojIzbor = izbor[0]; /* prvo slovo nas samo interesuje */

switch (mojIzbor)
{
case '1':
do
{
Console.WriteLine("\n Unesite koliko elemenata ima u nizu \n");
n = Convert.ToInt32(Console.ReadLine());
} while (n <= 0); /* necemo negativan broj elemenata niza */

mojNiz = new int[n];

for (int i = 0; i < mojNiz.Length; i++)
{
Console.WriteLine("U narednom redu unesite element niza sa indeksom " + i);
mojNiz[i] = Convert.ToInt32(Console.ReadLine());
}

ispisNiza(mojNiz);
break;
case '2':
if (mojNiz == null)
{
Console.WriteLine("prvo napravi niz sa kojim se radi ...");
}
else
{
Console.WriteLine("\n Najveci element niza je " + mojNiz.Max());
}
break;
case '3':
if (mojNiz == null)
{
Console.WriteLine("prvo napravi niz sa kojim se radi ...");
}
else
{
Array.Sort(mojNiz);
Console.Write("Nakon sortiranja: ");
ispisNiza(mojNiz);
}
break;
case '4':
if (mojNiz == null)
{
Console.WriteLine("prvo napravi niz sa kojim se radi ...");
}
else
{
ispisNiza(mojNiz);
}
break;
case '5':
return;
}
}
}
}
}

Last modified: Friday, 23 October 2020, 12:26 AM