Az a feladat,hogy írjam ki a tömb utolsó 3 elemének összegét. Megoldottam az alábbi módon, de szerintem nem így gondolta a tanár. Nem lehetne ezt szebben megoldani? Adnátok némi ötletet?
//Az utolsó 3 elem összege!
System.out.println("Az utolsó 3 elem összege:");
double sum = 0.0;
for(int i=0;i<tomb.length;i++) {
int utolso = tomb[tomb.length - 1];
int utolsoElotti = tomb[tomb.length - 2];
int utolsoElotti2 = tomb[tomb.length - 3];
sum = utolso+utolsoElotti+utolsoElotti2;
}
System.out.println("összesen: "+sum);
Vezesd le papíron, hogy mit írtál le:
tomb: 1, 2, 3, 4, 5
i = 0
utolso = 5
utolsoElotti = 4
utolsoElotti2 = 3
sum = 12
i = 1
utolso = 5
utolsoElotti = 4
utolsoElotti2 = 3
sum = 12
i = 2
utolso = 5
utolsoElotti = 4
utolsoElotti2 = 3
sum = 12
i = 3
utolso = 5
utolsoElotti = 4
utolsoElotti2 = 3
sum = 12
i = 4
utolso = 5
utolsoElotti = 4
utolsoElotti2 = 3
sum = 12
A kérdés: Szóval, van értelme, hogy ciklusba tedd?
B kérdés: Ha már ciklust akarsz használni, nem lenne célszerűbb csak a tömb utolsó három elemét kiválasztani az "i" ciklusváltozóval?
int szum = 0;
int vizsgalandoHossz = 3;
// utolsó elemtől visszafelé és összegzés tétele
for (int i = tomb.length - 1; i > 0 && i > tomb.length - vizsgalandoHossz; i--)
{
szum += tomb[i];
}
Most máshogy nem jut eszembe, hogy egyszerű legyen és átalakítható.
Talán amúgy while-lal szebb.
Vagy ha tuti az utcsó 3 kell és biztosan van benne legalább 3 elem, akkor amit írtál, csak ciklus nélkül.
A kérdés: Szóval, van értelme, hogy ciklusba tedd? Nem, így hogy rávilágítottál, rájöttem, hogy nem. :-)
B kérdés: Ha már ciklust akarsz használni, nem lenne célszerűbb csak a tömb utolsó három elemét kiválasztani az "i" ciklusváltozóval?
Az utolsó 3 elemet hogy kell kiválasztani, úgy ahogy a 2. hozzászólásodban megcsináltad?
int szum = 0;
int vizsgalandoHossz = 3;
for (int i = tomb.length - vizsgalandoHossz; i < tomb.length; i++)
{
szum += tomb[i];
}
így szebb
5
Igazad van. :)
Így nincs para, hogy az ember kifut a tömbből.
Bocsánat, a ToList() nem kell. Tehát a helyes megoldás:
var sum = tomb.Skip(tomb.Length - 3).Take(3).Sum();
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!