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));