Feltöltök egy 20-elemű tömböt −1000 és 1000 közötti véletlen egész számokkal. Majd bekér egy egész számot (x). Aztán kiírja azokat a számokat a tömbben levők közül, melyek a [−x, +x ] intervallumba esnek. Hogyan tudnám ezt leprogramozni?
mi a hiba benne? Az utolsó feltételnél kiirja hogy az index a tömb határain kívül van. Miért?
int[] tomb = new int[20]; //20 elemű tömb
Random rnd = new Random(); //véletlenszám generálás
for (int i = 0; i < 20; i++) //léptetés a 20 elemű tömbön
{
tomb[i] = rnd.Next(-100, 100); //tömb elem feltöltése
Console.WriteLine(tomb[i]);
}
Console.WriteLine("kérek egy számot"); //számbekérés
int bekértszám = int.Parse(Console.ReadLine()); //bekérés
for (int i = 0; i < bekértszám; i++) //végigléptetés a bekért számon
if (tomb[i] > -bekértszám && tomb[i] < bekértszám) //feltétel a + és - közé eső tömbelemek
Console.WriteLine(tomb[i]); //tömbelemek kiiartása
Console.ReadKey();
int[] tomb = new int[20]; //20 elemű tömb
Random rnd = new Random(); //véletlenszám generálás
for (int i = 0; i < 20; i++) //léptetés a 20 elemű tömbön
{
tomb[i] = rnd.Next(-100, 100); //tömb elem feltöltése
Console.WriteLine(tomb[i]);
}
Console.WriteLine("kérek egy számot"); //számbekérés
int bekértszám = int.Parse(Console.ReadLine()); //bekérés
for (int i = 0; i < tomb.Length; i++) //végigléptetés a bekért számon
if (tomb[i] >= -bekértszám && tomb[i] <= bekértszám) //feltétel a + és - közé eső tömbelemek
Console.WriteLine(tomb[i]); //tömbelemek kiiartása
Console.ReadKey();
Vagy itt egy kicsit profibb megoldás LINQ kifejezéssel:
int[] tomb = new int[20]; //20 elemű tömb
Random rnd = new Random(); //véletlenszám generálás
int bekértszám;
for (int i = 0; i < 20; i++) //léptetés a 20 elemű tömbön
{
tomb[i] = rnd.Next(-100, 100); //tömb elem feltöltése
Console.WriteLine(tomb[i]);
}
Console.WriteLine("kérek egy számot"); //számbekérés
if (!int.TryParse(Console.ReadLine(), out bekértszám)) // ha a megadott érték nem érvényes egész szám
{
Console.WriteLine("A megadott érték nem szám!");
Console.ReadKey();
return;
}
var numbersInInterval = from int n in tomb
where n >= -bekértszám && n <= bekértszám
select n; //az intervallumba eső számok lekérdezése LINQ to Object-el
foreach (var item in numbersInInterval)
{
Console.WriteLine(item);
}
Köszönöm zsomkovacs!
Valóban csak ennyi volt a hiba, most már működik.
mégegyszer köszi a segítséget
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!