Kezdőoldal » Számítástechnika » Programozás » Az a feladat,hogy írjam ki a...

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?

Figyelt kérdés

//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);


2020. jún. 5. 21:06
1 2
 1/13 anonim ***** válasza:
100%

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?

2020. jún. 5. 21:10
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
100%

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.

2020. jún. 5. 21:43
Hasznos számodra ez a válasz?
 3/13 A kérdező kommentje:

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?

2020. jún. 6. 09:14
 4/13 A kérdező kommentje:
Igen, most hogy jobban átnéztem a 2. megoldásodat látom, hogy igen: tomb.length - vizsgalandoHossz addig amíg az utolsó 3 elem, de ezt akkor ezt:i > 0 minek megadni feltételként?
2020. jún. 6. 09:16
 5/13 anonim ***** válasza:

int szum = 0;

int vizsgalandoHossz = 3;


for (int i = tomb.length - vizsgalandoHossz; i < tomb.length; i++)

{

szum += tomb[i];

}


így szebb

2020. jún. 6. 12:48
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:
Ok, ezt így értem is! Köszönöm
2020. jún. 6. 13:03
 7/13 anonim ***** válasza:

5


Igazad van. :)

Így nincs para, hogy az ember kifut a tömbből.

2020. jún. 6. 18:37
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
var sum = tomb.ToList().Skip(tomb.Length - 3).Take(3).Sum();
2020. jún. 6. 19:45
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

Bocsánat, a ToList() nem kell. Tehát a helyes megoldás:


var sum = tomb.Skip(tomb.Length - 3).Take(3).Sum();

2020. jún. 6. 19:47
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:
Térjen át hirtelen Java-ról C#-ra?
2020. jún. 6. 20:04
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!