Feladat: Olvassunk be számértékeket az ”args”-ból, majd határozzuk meg a legnagyobb (maximális) és a legkisebb (minimális) számot

A következő számokat adjuk meg argumentumokként a projekthez: 12 1 34 23 98 76 4 53 89 33 76. Ezek a számok lesznek az args elemei stringként, tehát át kell alakítanunk őket számokká, ezután pedig meg kell keresni a minimális és a maximális értéket.

Ne használjunk példányváltozót vagy osztályváltozót!

Metódusok:

public static double convert(String[ ] x) //kezeli az adott paramétereket

public static double max(double[ ] x) //Megkeresi a legnagyobb számot

public static double min(double[ ] x) // Megkeresi a legkisebb számot

public static String errorhandle () //Megjelenít egy üzenetet a felhasználó számára, ha a paraméter lista nem megfelelő.

public static void writer(real[ ] t,real maxi, real mini) //Megjeleníti a számokat tabulátor-karakterekkel elválasztva ("\t") és a legnagyobb, ill. legkisebb számot.

 

 

  51. ábra

  52. ábra

 

 

Szintaxis:

namespace ConsoleApplication34

{

class Program

{

static void Main(string[] args)

{

if (args.Length == 0)

{

System.Console.WriteLine(errorhandle());

}

else

{

int[] series = convert(args);

writer(series, max(series), min(series));

}

}

public static int[] convert(string[] x)

{

int[] yo = new int[x.Length];

for (int i = 0; i < x.Length; i++)

{

try

{

yo[i] = System.Convert.ToInt32(x[i]);

}

catch (System.Exception e)

{

System.Console.WriteLine("Nem konvertálható számmá!");

}

}

return yo;

}

public static int max(int[] x)

{

int max = x[0];

for (int i = 1; i < x.Length; i++)

{

if (x[i] > max)

{

max = x[i];

}

}

return max;

}

public static int min(int[] x)

{

int min = x[0];

for (int i = 1; i < x.Length; i++)

{

if (x[i] < min)

{

min = x[i];

}

}

return min;

}

public static string errorhandle()

{

return "Legalább egy elem szükséges!";

}

//Gyakran hasznos a kiértékelést az utoljára végrehajtott metódusnál kezdeni.

//A writer metódus:

public static void writer(int[] t, int maxi, int mini)

{

for (int i = 0; i < t.Length; i++)

{

System.Console.Write(t[i] + "\t");

}

System.Console.WriteLine();

System.Console.WriteLine("Legnagyobb (max): " + maxi);

System.Console.WriteLine("Legkissebb (min): " + mini);

}

}

}

A writer metódus három paramétert vár: egy egész számokból álló tömböt és két egész számot. A writernek nincs visszatérési értéke, csupán megjeleníti az adatokat.

Az errorhandle metódus:

public static string errorhandle()

{

return "Legalább egy elem szükséges!";

}

Valójában a fenti metódus csak egy szöveget tartalmaz, amivel visszatér hívás esetén.

A min metódus:

public static int min(int[] x)

Ez a metódus egy egész számokból álló tömböt vár paraméterként.

int min = x[0];

A min változót int típusként deklarlátuk, és a kezdőértéke a tömb első értéke. Feltételezzük, hogy a legkisebb érték a 0 indexen található (tehát azt feltételezzük, hogy a tömb már rendezett)

for (int i = 1; i < x.Length; i++)

{

if (x[i] < min)

A for ciklus végiglépkedi az elemeket, és az if elágazás megvizsgálja, hogy az aktuális elem kisebb-e a jelenlegi minimális értéknél.

min = x[i];

Ha kisebb, akkor az új érték kerül a min változóba, így a ciklus (és a tömb) végére érve a legkisebb elem lesz a min nevű változóban letárolva.

return min;

Végül a metódus visszatér a min változó értékével.

Ugyanaz érvényes a max metódusra is, az egyetlen különbség az if elágazásban van:

if (x[i] > max)

A convert metódus felelős a stringek egész számmá konvertálásáért:

public static int[] convert(string[] x)

Egy új tömböt deklaráltunk, amely pontosan akkora méretű, mint az x tömb.

Az x tömb minden elemét egész számmá konvertálja a Convert objektum a ToInt32() metódust használva:

for (int i = 0; i < x.Length; i++)

{

try

{

yo[i] = System.Convert.ToInt32(x[i]);

}

catch (System.Exception e)

{

System.Console.WriteLine("Nem konvertálható számmá!");

}

}

return yo;

}

A végén visszatér a teljesen átkonvertált tömbbel.

Jelen példánkban a Main metódus a legérdekesebb:

static void Main(string[] args)

{

if (args.Length == 0)

Ha nincs legalább egy paraméter az args tömbben, akkor az errorhandle metódus kap szerepet, beágyazva a writeln metódusba: a visszatérési értékét közvetlenül megkapja a kiírásáért felelős writeln metódus.

System.Console.WriteLine(errorhandle());

Az újonnan létrehozott series tömb kezdőértékei a konvertált tömb elemei lesznek.

int[] series = convert(args);

Utolsó lépésként a writer metódust hívjuk meg a series tömbbel, és a beágyazott min és max metódusokkal, és megjeleníti a két számot (a legnagyobb és legkisebb értéket).

writer(series, max(series), min(series));

 

 

 

A tananyag a követkkező licenc alá esik: GNU Free Documentation License