Az alábbi feladatot hogyan kellene megoldani Java programozásban?
sertés 3,5 kecske 1,33 juh 0,5
ennek kell egy közös pont, ami 100 lesz, de ezt addig ismételje, amíg az állatok száma is száz nem lesz, ami bonyolítja, az az 1+1harmad, mert 1,333333333333333333 és
elsőnek próbáld meg kettővel vagy "kerekebb számmal"
Így este már nincs kedvem leírni, de a gondolatmenet nem olyan bonyolultnak tűnik
System.out.println("lehetséges megoldások [s;k;j]:");
for (int s = 0; s <= 100; s++) {
for (int k = 0; k <= 100; k++) {
for (int j = 0; j <= 100; j++) {
if (21 * s + 8 * k + 3 * j == 600 && s + k + j == 100) {
System.out.println("[" + s + ";" + k + ";" + j + "]");
}
}
}
}
#3: wow!
a közös többszörös megoldás meg külön wow! :)
#2-es vagyok és csak azért kérdeztem mert jól jönnek az ilyen gyakorló feladatok nekem is...
Egymásba ágyazott FOR: Végigmegy a sertések mennyiségén. Minden egyes sertésmennyiség mellett végigmegy a kecskék mennyiségén, és minden egyes kecskemennyiség mellett végig megy az összes juhmennyiségen. Magyarul a három egymásbaágyazott forciklus azt csinálja, hogy az összes létező kombináción végigmegy, kezdve a 0/0/0 db állattól a 100/100/100db állatig. Azaz 100*100*100 = 10 millió kombináción végigpörög.
Az IF pedig a forciklusokon belül van, azaz minden egyes kombináción megvizsgálja, hogy igaz-e:
1.) összesen 100 állatunk van
2.) összesen 100 aranyat fizetünk
Amennyiben teljesül mindkét feltétel, kiírja a helyes kombinációt.
Ha a diofantoszi matekos megoldásra gondolsz, akkor azt egy kicsit problémásabb lesz elmagyarázni, hiszen azért a lineáris algebrát már nagyjából érteni kéne ahhoz, hogy felfogd (meg a 3 ismeretlenes diofantoszi egyenlet egyébként is összetett), de majd tanulni és használni fogjátok a későbbiek során, például a kódolásnál vagy kriptográfiánál. Programozás alapjain nem kell ezt még tudni.
Lehet a 21s + 8k + 3j = 600 kifejezés zavar be:
3.5 sertés + 4/3 kecske + 0.5 juh = 100 arany. Ez eddig megvan? Hattal való szorzás után meg a fenti egyenletet kapjuk. Azért szoroztam be hattal, hogy egész számokat kapjunk és így lehessen integerekkel számolni. Mivel az egyenlet mindkét oldalát megszoroztam hattal, ezért ekvivalens átalakításnak minősül, tehát rendben van.
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!