Hogy van ez a program, mit rontottam el?
int[] szamok = new int[10];
for (int i = 0; i < szamok.Length; i++)
{
Console.Write("Kérem adja meg a tömb {0}. elemének értékét: ", i + 1);
szamok[i]=Convert.ToInt32(Console.ReadLine());
Console.Clear();
}
Console.WriteLine("A felhasználó által feltöltött tömb a következő: ");
for (int i = 0; i < szamok.Length; i++)
{
Console.WriteLine("{0} ", szamok[i]);
}
Console.Write("Kérem adja meg a az intervallum alsó határának az értékét: ");
int intervallum_also = Convert.ToInt32(Console.ReadLine());
Console.Write("Kérem adja meg az intervallum felső határának az értékét ");
int intervallum_felso=Convert.ToInt32(Console.ReadLine());
Console.Clear();
Csole.WriteLine("A megadott intervallumba a tömb elemei a következők: ");
for (int i = intervallum_also; i <intervallum_felso; i++)
{
Console.WriteLine(szamok[i]);
}
Console.ReadLine();
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
for (int i = intervallum_also; i <intervallum_felso; i++)
{
Console.WriteLine(szamok[i]);
}
Itt van a hiba.
Ha pl. az intervallumom az 50 és 80, akkor így működik a programod:
for (int i = 50; i < 80; i++)
{
Console.WriteLine(szamok[50-80]);
}
De a tömböd csak 10 elemes, és ha az intervallumod 10 fölött van, akkor a 10+. elemet próbálja kiírni consolera, ami ugye nincsen.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Nem teljesen világos, hogy mi a feladat.
Ha jól értem, azt szeretnéd elérni, hogy a program írja ki a tömbnek azokat az elemeit, amelyek beleesnek egy megadott intervallumba?
Mert akkor a harmadik ciklusnak valahogy így kell kinéznie:
for (int i = 0 ; i < szamok.Length ; i++) {
int a = szamok[i];
if (intervallum_also <= a && a <= intervallum_felso)
Console.WriteLine(a);
}
Köszi utolsó válaszoló meg a többieknek is köszi igen ez lenne a cél de ezt a részt nem értem ez mit jelent, miért kell egy külön változott létrehozni ? miért nem használhatom szamok[i] -t
"int a = szamok[i];"
Köszi!
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Csak ennyit jelent: Ha az intervallum_also változó értéke kisebb vagy egyenló a szamok nevű tomb i-edik elemével, és ugyanaz a tömbelem kisebb vagy egyenlő az intervallum_felso változó értékével, akkor kell kiírni a tartalmát. Szerintem egy picivel átláthatóbb az első feltétel megfordításával: Ha a tömbelem nagyobb vagy egyenlő az alsó határral és kisebb vagy egyenlő a felsővel, akkor írd ki. Külön változó nélkül így néz ki:
for (int i = 0 ; i < szamok.Length ; i++) {
if (szamok[i] >= intervallum_also && szamok[i] <= intervallum_felso)
Console.WriteLine(szamok[i]);
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!