Kellene egy kis segítség egy C#-ban megoldandó feladathoz. Sajnos eddig nem igen tanultam ezen a nyelven programozni. Elvileg, csak 4-5 metódus lenne az egész feladat. Tudna segíteni benne valaki?
Fel kellene töltenem egy 2 dimenziós tömböt számokkal. Aztán végig kellene menni a tömbön és megkeresni azt a két értéket hol a legnagyobb a különbség (de ez lehet felette is és alatta is a tömbben)
Végül pedig rekurzióval el kellene jutni a legkisebb elemtől a legnagyobbig, úgy hogy csak mindig nagyobb értékű helyre léphetek.
Valami ilyesmire gondoltál? Ha igen jössz egy sörrel ;)
class Program
{
static int[,] numbers = new int[5, 5]; //Ebbe vannak a számok
static void Main(string[] args)
{
Random rnd = new Random();
//Számok feltöltése és kiiratása
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
numbers[i, j] = rnd.Next(10, 99);
Console.Write(numbers[i, j] + " ");
}
Console.Write("\n");
}
Console.Write("\n");
int min, max;
min = max = numbers[0, 0];
//Minimum és maximum keresés
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (numbers[i, j] < min)
{
min = numbers[i, j];
}
else if (numbers[i, j] > max)
{
max = numbers[i, j];
}
}
}
Console.WriteLine(String.Format("A legkisebb elem: {0}, a legnagyobb elem: {1}", min, max));
Console.WriteLine();
Console.Write("Számok bejárása növekvő sorrendben: ");
//rekurzív bejárás
NextNumber(min, -1, -1);
Console.Read();
}
public static void NextNumber(int currentValue, int currentI, int currentJ)
{
int ii = -1;
int jj = -1;
int nextNumber = -1;
//Végignézem a tömböt, hogy van-e nagyobb vagy egyenlő érték mint az aktuális
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
int act = numbers[i, j];
if (act >= currentValue)
{
//Ha egyenlő
if (act == currentValue)
{
//Ha egyelő, akkor figyelni kell, hogy az indexek csak az aktuális utáni értékeket nézze, hogy egy elemet ne vegyen többször
if ((nextNumber == -1 || act < nextNumber) && (i > currentI || (i == currentI && j > currentJ)))
{
nextNumber = act;
ii = i;
jj = j;
}
}
else
{
if (nextNumber == -1 || nextNumber > act)
{
nextNumber = act;
ii = i;
jj = j;
}
}
}
}
}
//Ha volt nagyobb vagy egyenlő érték, akkor kiírjuk és meghívjuk a fv-t az aktuális értékkel és pozícióval
if (nextNumber != -1)
{
Console.Write(nextNumber + "; ");
NextNumber(nextNumber, ii, jj);
}
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!