Van kettő darab tömböm és párhuzamosan feltöltöm (név, osztályzat) hogyan kell kiíratni az ötös neveit?
Az én gondolat menetem :
(részlet)
string [] nev = new string [c];
int [] numbers = new int [c];
for ( i = 0; i < c; i++)
{
Console.Write("A meg a(z) {0} tanuló nevét: ",i+1);
nev[i] = Console.ReadLine();
numbers[i] = r.Next(1, 5+1);
}
int su=0;
string [] seged = new String [c];
for ( i = 0; i <c; i++)
{
if (numbers[i] == 5)
{
seged[i] = nev[i];
su++;
Console.Write("{0}" , seged[i]);
}
if (su<=0)
Console.WriteLine("Nincsen ilyen tanuló!");
A tanár mindig mondja, hogy while ciklussal oldjuk meg , de az ilyet nem lehet vagy igen ?
Minden egyen elemet meg kell vizsgálni hogy egyenlő-e öttel (==5), és a while addig fut amíg igaz a feltétele és ha bekap egy pl : 4 ak kilép és ha még van untánna pl : 3 osztályzat és a 3közt még van ötös akkor annak a nevét már nem írja ki.
While lehet ? Vagy nem ?
a su++ az lényegében a megszámlálás tétele, de amúgy az ilyen feladat az nem kiválogatás tétele lenne? és akkor elvileg lehet while ? ha igen én nem jöttem rá
akkor hogy kellene ? (ha lehet)
A for és a while ciklus közt ennyi a különbség:
for (int i = 0; i < 5; i++) {}
int i = 0;
while (i < 5) {
.. //kód ide
.. i++;
}
Szóval:
int i = 0;
while (i < numbers.Length) {
.. if (numbers[i] == 5)
.. .. Console.WriteLine(nevek[i]);
}
C#-ban (meg sok más nyelvben is) a for csak egy szintaktikai cukorka a while-ra.
Bármit meg lehet csinálni az egyikkel, amit a másikkal.
Végül is az első válaszoló a while-ciklusban olyan feltételt fogalmazott meg hogy addig menjen még i<numbers.lenght --> ami biztos végig megy minden egyes elemen mert i=0 < numbers.lenght mivel ez egy pozitív szám és minden pozitív szám nagyobb mint nulla.
és akkor az i értéket nem is növelted??
De, épp ez lenne a lényege, hogy növeled a ciklus végén az 'i' értékét. A válaszoló azt gondolta, hogy az első példa után erre rájössz magadtól is.
Egyébként a kódod több sebből vérzik. A seged tömbnek az égadta világon semmi jelentősége nincsen, ráadásul lyukacsosan töltöd fel. Továbbá ha csak arra vagy kíváncsi, hogy volt-e ötös hallgató a végső elágazásnál, akkor fölösleges számolni őket, egy bool változót fölveszel false kezdőértékkel, és ha találsz ötös tanulóta ciklus során beállítod true-ra. Meg eleve, ha a 'su' értéke kezdetben nulla, és kizárólag növeled, akkor miért úgy ellenőrzöd, hogy <=0? Soha az életben nem lesz 0-nál kisebb.
#4: "C#-ban (meg sok más nyelvben is) a for csak egy szintaktikai cukorka a while-ra."
Arra azért ne biztassuk a tanulni vágyókat, hogy FOR ciklussal akarjanak egy fájl vége jelig vagy adott eseményig való ismétlődést megcsinálni. A FOR valójában a *számlált* WHILE ciklus egyszerűsített változata, de a WHILE nagyobb képességű szerkezeti elem.
#8
while(condition){}
for(;condition;){}
Ezt gondold újra.
"A válaszoló azt gondolta, hogy az első példa után erre rájössz magadtól is."
Igazából csak nagyon be voltam b_szva az este a sok kólától és elfelejtettem odaírni a végére az i++-t. Bocsánat.
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!