Gyakorlati alapok
Különutas összeg-, és szorzatlista
Ebben a fejezetben folytatjuk az előző fejezetekben gyakorolt különutas (értsd: külön eljárásos és/vagy külön függvényes) kódszerkezettel implementált problémák megoldását. Ugorjon elénk a következő probléma:
Listázza ki azon számokat, amelyek összege az Ön által bekért és megadott szám!
Ez egyébként az egyik multi programozási cégnél felvételi (gyakorlati) kérdés volt.
Az elméleti "kódcsontvázat" (nem azt, amelyik kiesik a szekrényből, hanem amelyik zörögve átrugdos minket a felvételin) fejben is felállíthatjuk:
-
A legfontosabb bemeneti változókat "globális" (itt osztály) szinten kell deklarálnunk, hogy mindenki szabadon tudja felhasználni. Ehhez a változók deklarálásakor a static módosítást is fel kell vennünk:
-
static int osszeg = 0;
-
static int szamMennyiseg = 0;
-
-
(korlátozottan) ellenőrzött adatbekérés (adatBekeres()) - a 2 db bemeneti adat bekérése során (osszeg, szamMennyiseg) a metódus csakis azt ellenőrzi, hogy:
-
osszeg esetén:
-
ne kerüljön 0 a rendszerbe, bár alapjában véve igaz a kijelentés: 0 + 0 = 0,
-
ne kerüljön túl nagy szám a rendszerbe - az utóbbi esetben hosszú-hosszú percekig fog listázni a program, amely teljesen felesleges,
-
egyéb, nem numerikus karakter esetén nem lekezelt kivételt dob,
-
az osszeg validálásánál további szűrőket is be lehetne iktatni, amelytől most eltekintünk.
-
-
szamMennyiseg esetén, mivel az összegzés minimum 2 szám összege, arról kell gondoskodnunk:
-
ne kerüljön 2-nél kisebb szám a rendszerbe,
-
vagy -pusztán praktikus okokból-, 5-nél nagyobb szám a rendszerbe - az utóbbi esetben hosszú-hosszú percekig listázna a program, amely teljesen felesleges,
-
egyéb, nem numerikus karakter esetén nem lekezelt kivételt dob.
-
-
-
Jegyezzük meg, hogyha valamit listáznunk kell, akkor a "mindent mindennel" elv érvényesül, azaz mindent mindennel kell összevetnünk, megvizsgálnunk. Mivel a mostani esetben minimum 2, maximum 5 számot kell folyamatosan felhasználnunk, ennek optimális vezérlési szerkezete az egybeágyazott for ciklusok használata.
-
Az algoritmus kulcsrésze a pontos feltételmegadás, amelynek elvi sémája így néz ki:
HA(szám1 + szám2 + számN = bekértSzám)
-
Konkrét Java-implementációja:
if((i + j + N) == osszeg)
-
Nyilvánvalóan csakis azon számcsoportokat kell megjelenítenünk, amelyek a fenti feltételnek megfelelnek. Meglehet a zárójelezés itt talán felesleges, de én -biztonsági okból-, legtöbbször "túlzárójelezem" a műveleteket, hogy ezáltal jelezzek a JVM felé egy egyértelmű végrehajtási sorrendet.
-
Az egybeágyazott for ciklusok használata során a szabály a következő: ahány számot szeretnénk összegezni, annyi szintűnek kell lennie az egybeágyazott for ciklusnak. Például 3 szám összegzése esetén 3 db egybeágyazott for ciklusos szerkezetet kell felhasználnunk. Mivel 2-től 5 számmennyiségig vizsgáljuk a feladatot, célszerű ezeket külön eljárásokba illeszteni:
-
listazo2Szam();
-
listazo3Szam();
-
listazo4Szam();
-
listazo5Szam();
-
-
A többszörös elágazás optimális vezérlési szerkezete a switch, amelyet a main() főprogramban implementálunk. Ez a szamMennyiseg alapján fog kapcsolgatni a listázó metódusok között.
Nézzük meg a futtatható Java-kódot!
import java.util.Scanner;
public class Main {
static int osszeg = 0;
static int szamMennyiseg = 0;
static void adatBekeres(){
Scanner in = new Scanner(System.in);
do{
System.out.println("Kérem, hogy adja
meg az összeget (1 és 1000 között)!");
String osszegString = in.nextLine();
osszeg = Integer.parseInt(osszegString);
}while(osszeg < 1 || osszeg > 1000);
do{
System.out.println("Kérem, hogy adja
meg, hány szám összegét keresi (2 és 5 között)!");
String szamString = in.nextLine();
szamMennyiseg = Integer.parseInt(szamString);
}while(szamMennyiseg > 5 || szamMennyiseg < 2);
in.close();
}
static void listazo2Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
if((i + j) ==
osszeg){
System.out.print(i + " + " + j + " = " + osszeg + "\n");
}
}
}
}
static void listazo3Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
if((i + j + k) == osszeg){
System.out.print(i + " + " + j + " + " + k + " = " + osszeg + "\n");
}
}
}
}
}
static void listazo4Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
for(int l = 0; l < osszeg; l++){
if((i + j + k + l) == osszeg){
System.out.print(i + " + " + j + " + " + k + " + " + l + " = " + osszeg +
"\n");
}
}
}
}
}
}
static void listazo5Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
for(int l = 0; l < osszeg; l++){
for(int m = 0; m < osszeg; m++){
if((i + j + k + l + m) == osszeg){
System.out.print(i + " + " + j + " + " + k + " + " + l + " + " + m + " = " +
osszeg + "\n");
}
}
}
}
}
}
}
public static void main(String[] args) {
System.out.println("Ez a program megtalálja azon számokat,
amelyek összege az Ön által megadott szám.");
adatBekeres();
switch(szamMennyiseg){
case 2: listazo2Szam(); break;
case 3: listazo3Szam(); break;
case 4: listazo4Szam(); break;
case 5: listazo5Szam(); break;
}
}
}
Végeredmény:
Ez a program megtalálja azon számokat, amelyek összege
az Ön által megadott szám.
Kérem, hogy adja meg az összeget (1 és 1000 között)!
0
Kérem, hogy adja meg az összeget (1 és 1000 között)!
1001
Kérem, hogy adja meg az összeget (1 és 1000 között)!
35
Kérem, hogy adja meg, hány szám összegét keresi (2 és 5 között)!
1
Kérem, hogy adja meg, hány szám összegét keresi (2 és 5 között)!
6
Kérem, hogy adja meg, hány szám összegét keresi (2 és 5 között)!
3
0 + 1 + 34 = 35
0 + 2 + 33 = 35
0 + 3 + 32 = 35
0 + 4 + 31 = 35
0 + 5 + 30 = 35
0 + 6 + 29 = 35
0 + 7 + 28 = 35
0 + 8 + 27 = 35
0 + 9 + 26 = 35
0 + 10 + 25 = 35
0 + 11 + 24 = 35
0 + 12 + 23 = 35
0 + 13 + 22 = 35
0 + 14 + 21 = 35
0 + 15 + 20 = 35
0 + 16 + 19 = 35
0 + 17 + 18 = 35
0 + 18 + 17 = 35
0 + 19 + 16 = 35
0 + 20 + 15 = 35
0 + 21 + 14 = 35
0 + 22 + 13 = 35
0 + 23 + 12 = 35
0 + 24 + 11 = 35
0 + 25 + 10 = 35
0 + 26 + 9 = 35
0 + 27 + 8 = 35
0 + 28 + 7 = 35
0 + 29 + 6 = 35
0 + 30 + 5 = 35
0 + 31 + 4 = 35
0 + 32 + 3 = 35
0 + 33 + 2 = 35
0 + 34 + 1 = 35
1 + 0 + 34 = 35
1 + 1 + 33 = 35
1 + 2 + 32 = 35
1 + 3 + 31 = 35
1 + 4 + 30 = 35
1 + 5 + 29 = 35
1 + 6 + 28 = 35
1 + 7 + 27 = 35
1 + 8 + 26 = 35
1 + 9 + 25 = 35
1 + 10 + 24 = 35
1 + 11 + 23 = 35
1 + 12 + 22 = 35
1 + 13 + 21 = 35
1 + 14 + 20 = 35
1 + 15 + 19 = 35
1 + 16 + 18 = 35
1 + 17 + 17 = 35
1 + 18 + 16 = 35
1 + 19 + 15 = 35
1 + 20 + 14 = 35
1 + 21 + 13 = 35
1 + 22 + 12 = 35
1 + 23 + 11 = 35
1 + 24 + 10 = 35
1 + 25 + 9 = 35
1 + 26 + 8 = 35
1 + 27 + 7 = 35
1 + 28 + 6 = 35
1 + 29 + 5 = 35
1 + 30 + 4 = 35
1 + 31 + 3 = 35
1 + 32 + 2 = 35
1 + 33 + 1 = 35
1 + 34 + 0 = 35
2 + 0 + 33 = 35
2 + 1 + 32 = 35
2 + 2 + 31 = 35
2 + 3 + 30 = 35
2 + 4 + 29 = 35
2 + 5 + 28 = 35
2 + 6 + 27 = 35
2 + 7 + 26 = 35
2 + 8 + 25 = 35
2 + 9 + 24 = 35
2 + 10 + 23 = 35
2 + 11 + 22 = 35
2 + 12 + 21 = 35
2 + 13 + 20 = 35
2 + 14 + 19 = 35
2 + 15 + 18 = 35
2 + 16 + 17 = 35
2 + 17 + 16 = 35
2 + 18 + 15 = 35
2 + 19 + 14 = 35
2 + 20 + 13 = 35
2 + 21 + 12 = 35
2 + 22 + 11 = 35
2 + 23 + 10 = 35
2 + 24 + 9 = 35
2 + 25 + 8 = 35
2 + 26 + 7 = 35
2 + 27 + 6 = 35
2 + 28 + 5 = 35
2 + 29 + 4 = 35
2 + 30 + 3 = 35
2 + 31 + 2 = 35
2 + 32 + 1 = 35
2 + 33 + 0 = 35
3 + 0 + 32 = 35
3 + 1 + 31 = 35
3 + 2 + 30 = 35
3 + 3 + 29 = 35
3 + 4 + 28 = 35
3 + 5 + 27 = 35
3 + 6 + 26 = 35
3 + 7 + 25 = 35
3 + 8 + 24 = 35
3 + 9 + 23 = 35
3 + 10 + 22 = 35
3 + 11 + 21 = 35
3 + 12 + 20 = 35
3 + 13 + 19 = 35
3 + 14 + 18 = 35
3 + 15 + 17 = 35
3 + 16 + 16 = 35
3 + 17 + 15 = 35
3 + 18 + 14 = 35
3 + 19 + 13 = 35
3 + 20 + 12 = 35
3 + 21 + 11 = 35
3 + 22 + 10 = 35
3 + 23 + 9 = 35
3 + 24 + 8 = 35
3 + 25 + 7 = 35
3 + 26 + 6 = 35
3 + 27 + 5 = 35
3 + 28 + 4 = 35
3 + 29 + 3 = 35
3 + 30 + 2 = 35
3 + 31 + 1 = 35
3 + 32 + 0 = 35
4 + 0 + 31 = 35
4 + 1 + 30 = 35
4 + 2 + 29 = 35
4 + 3 + 28 = 35
4 + 4 + 27 = 35
4 + 5 + 26 = 35
4 + 6 + 25 = 35
4 + 7 + 24 = 35
4 + 8 + 23 = 35
4 + 9 + 22 = 35
4 + 10 + 21 = 35
4 + 11 + 20 = 35
4 + 12 + 19 = 35
4 + 13 + 18 = 35
4 + 14 + 17 = 35
4 + 15 + 16 = 35
4 + 16 + 15 = 35
4 + 17 + 14 = 35
4 + 18 + 13 = 35
4 + 19 + 12 = 35
4 + 20 + 11 = 35
4 + 21 + 10 = 35
4 + 22 + 9 = 35
4 + 23 + 8 = 35
4 + 24 + 7 = 35
4 + 25 + 6 = 35
4 + 26 + 5 = 35
4 + 27 + 4 = 35
4 + 28 + 3 = 35
4 + 29 + 2 = 35
4 + 30 + 1 = 35
4 + 31 + 0 = 35
5 + 0 + 30 = 35
5 + 1 + 29 = 35
5 + 2 + 28 = 35
5 + 3 + 27 = 35
5 + 4 + 26 = 35
5 + 5 + 25 = 35
5 + 6 + 24 = 35
5 + 7 + 23 = 35
5 + 8 + 22 = 35
5 + 9 + 21 = 35
5 + 10 + 20 = 35
5 + 11 + 19 = 35
5 + 12 + 18 = 35
5 + 13 + 17 = 35
5 + 14 + 16 = 35
5 + 15 + 15 = 35
5 + 16 + 14 = 35
5 + 17 + 13 = 35
5 + 18 + 12 = 35
5 + 19 + 11 = 35
5 + 20 + 10 = 35
5 + 21 + 9 = 35
5 + 22 + 8 = 35
5 + 23 + 7 = 35
5 + 24 + 6 = 35
5 + 25 + 5 = 35
5 + 26 + 4 = 35
5 + 27 + 3 = 35
5 + 28 + 2 = 35
5 + 29 + 1 = 35
5 + 30 + 0 = 35
6 + 0 + 29 = 35
6 + 1 + 28 = 35
6 + 2 + 27 = 35
6 + 3 + 26 = 35
6 + 4 + 25 = 35
6 + 5 + 24 = 35
6 + 6 + 23 = 35
6 + 7 + 22 = 35
6 + 8 + 21 = 35
6 + 9 + 20 = 35
6 + 10 + 19 = 35
6 + 11 + 18 = 35
6 + 12 + 17 = 35
6 + 13 + 16 = 35
6 + 14 + 15 = 35
6 + 15 + 14 = 35
6 + 16 + 13 = 35
6 + 17 + 12 = 35
6 + 18 + 11 = 35
6 + 19 + 10 = 35
6 + 20 + 9 = 35
6 + 21 + 8 = 35
6 + 22 + 7 = 35
6 + 23 + 6 = 35
6 + 24 + 5 = 35
6 + 25 + 4 = 35
6 + 26 + 3 = 35
6 + 27 + 2 = 35
6 + 28 + 1 = 35
6 + 29 + 0 = 35
7 + 0 + 28 = 35
7 + 1 + 27 = 35
7 + 2 + 26 = 35
7 + 3 + 25 = 35
7 + 4 + 24 = 35
7 + 5 + 23 = 35
7 + 6 + 22 = 35
7 + 7 + 21 = 35
7 + 8 + 20 = 35
7 + 9 + 19 = 35
7 + 10 + 18 = 35
7 + 11 + 17 = 35
7 + 12 + 16 = 35
7 + 13 + 15 = 35
7 + 14 + 14 = 35
7 + 15 + 13 = 35
7 + 16 + 12 = 35
7 + 17 + 11 = 35
7 + 18 + 10 = 35
7 + 19 + 9 = 35
7 + 20 + 8 = 35
7 + 21 + 7 = 35
7 + 22 + 6 = 35
7 + 23 + 5 = 35
7 + 24 + 4 = 35
7 + 25 + 3 = 35
7 + 26 + 2 = 35
7 + 27 + 1 = 35
7 + 28 + 0 = 35
8 + 0 + 27 = 35
8 + 1 + 26 = 35
8 + 2 + 25 = 35
8 + 3 + 24 = 35
8 + 4 + 23 = 35
8 + 5 + 22 = 35
8 + 6 + 21 = 35
8 + 7 + 20 = 35
8 + 8 + 19 = 35
8 + 9 + 18 = 35
8 + 10 + 17 = 35
8 + 11 + 16 = 35
8 + 12 + 15 = 35
8 + 13 + 14 = 35
8 + 14 + 13 = 35
8 + 15 + 12 = 35
8 + 16 + 11 = 35
8 + 17 + 10 = 35
8 + 18 + 9 = 35
8 + 19 + 8 = 35
8 + 20 + 7 = 35
8 + 21 + 6 = 35
8 + 22 + 5 = 35
8 + 23 + 4 = 35
8 + 24 + 3 = 35
8 + 25 + 2 = 35
8 + 26 + 1 = 35
8 + 27 + 0 = 35
9 + 0 + 26 = 35
9 + 1 + 25 = 35
9 + 2 + 24 = 35
9 + 3 + 23 = 35
9 + 4 + 22 = 35
9 + 5 + 21 = 35
9 + 6 + 20 = 35
9 + 7 + 19 = 35
9 + 8 + 18 = 35
9 + 9 + 17 = 35
9 + 10 + 16 = 35
9 + 11 + 15 = 35
9 + 12 + 14 = 35
9 + 13 + 13 = 35
9 + 14 + 12 = 35
9 + 15 + 11 = 35
9 + 16 + 10 = 35
9 + 17 + 9 = 35
9 + 18 + 8 = 35
9 + 19 + 7 = 35
9 + 20 + 6 = 35
9 + 21 + 5 = 35
9 + 22 + 4 = 35
9 + 23 + 3 = 35
9 + 24 + 2 = 35
9 + 25 + 1 = 35
9 + 26 + 0 = 35
10 + 0 + 25 = 35
10 + 1 + 24 = 35
10 + 2 + 23 = 35
10 + 3 + 22 = 35
10 + 4 + 21 = 35
10 + 5 + 20 = 35
10 + 6 + 19 = 35
10 + 7 + 18 = 35
10 + 8 + 17 = 35
10 + 9 + 16 = 35
10 + 10 + 15 = 35
10 + 11 + 14 = 35
10 + 12 + 13 = 35
10 + 13 + 12 = 35
10 + 14 + 11 = 35
10 + 15 + 10 = 35
10 + 16 + 9 = 35
10 + 17 + 8 = 35
10 + 18 + 7 = 35
10 + 19 + 6 = 35
10 + 20 + 5 = 35
10 + 21 + 4 = 35
10 + 22 + 3 = 35
10 + 23 + 2 = 35
10 + 24 + 1 = 35
10 + 25 + 0 = 35
11 + 0 + 24 = 35
11 + 1 + 23 = 35
11 + 2 + 22 = 35
11 + 3 + 21 = 35
11 + 4 + 20 = 35
11 + 5 + 19 = 35
11 + 6 + 18 = 35
11 + 7 + 17 = 35
11 + 8 + 16 = 35
11 + 9 + 15 = 35
11 + 10 + 14 = 35
11 + 11 + 13 = 35
11 + 12 + 12 = 35
11 + 13 + 11 = 35
11 + 14 + 10 = 35
11 + 15 + 9 = 35
11 + 16 + 8 = 35
11 + 17 + 7 = 35
11 + 18 + 6 = 35
11 + 19 + 5 = 35
11 + 20 + 4 = 35
11 + 21 + 3 = 35
11 + 22 + 2 = 35
11 + 23 + 1 = 35
11 + 24 + 0 = 35
12 + 0 + 23 = 35
12 + 1 + 22 = 35
12 + 2 + 21 = 35
12 + 3 + 20 = 35
12 + 4 + 19 = 35
12 + 5 + 18 = 35
12 + 6 + 17 = 35
12 + 7 + 16 = 35
12 + 8 + 15 = 35
12 + 9 + 14 = 35
12 + 10 + 13 = 35
12 + 11 + 12 = 35
12 + 12 + 11 = 35
12 + 13 + 10 = 35
12 + 14 + 9 = 35
12 + 15 + 8 = 35
12 + 16 + 7 = 35
12 + 17 + 6 = 35
12 + 18 + 5 = 35
12 + 19 + 4 = 35
12 + 20 + 3 = 35
12 + 21 + 2 = 35
12 + 22 + 1 = 35
12 + 23 + 0 = 35
13 + 0 + 22 = 35
13 + 1 + 21 = 35
13 + 2 + 20 = 35
13 + 3 + 19 = 35
13 + 4 + 18 = 35
13 + 5 + 17 = 35
13 + 6 + 16 = 35
13 + 7 + 15 = 35
13 + 8 + 14 = 35
13 + 9 + 13 = 35
13 + 10 + 12 = 35
13 + 11 + 11 = 35
13 + 12 + 10 = 35
13 + 13 + 9 = 35
13 + 14 + 8 = 35
13 + 15 + 7 = 35
13 + 16 + 6 = 35
13 + 17 + 5 = 35
13 + 18 + 4 = 35
13 + 19 + 3 = 35
13 + 20 + 2 = 35
13 + 21 + 1 = 35
13 + 22 + 0 = 35
14 + 0 + 21 = 35
14 + 1 + 20 = 35
14 + 2 + 19 = 35
14 + 3 + 18 = 35
14 + 4 + 17 = 35
14 + 5 + 16 = 35
14 + 6 + 15 = 35
14 + 7 + 14 = 35
14 + 8 + 13 = 35
14 + 9 + 12 = 35
14 + 10 + 11 = 35
14 + 11 + 10 = 35
14 + 12 + 9 = 35
14 + 13 + 8 = 35
14 + 14 + 7 = 35
14 + 15 + 6 = 35
14 + 16 + 5 = 35
14 + 17 + 4 = 35
14 + 18 + 3 = 35
14 + 19 + 2 = 35
14 + 20 + 1 = 35
14 + 21 + 0 = 35
15 + 0 + 20 = 35
15 + 1 + 19 = 35
15 + 2 + 18 = 35
15 + 3 + 17 = 35
15 + 4 + 16 = 35
15 + 5 + 15 = 35
15 + 6 + 14 = 35
15 + 7 + 13 = 35
15 + 8 + 12 = 35
15 + 9 + 11 = 35
15 + 10 + 10 = 35
15 + 11 + 9 = 35
15 + 12 + 8 = 35
15 + 13 + 7 = 35
15 + 14 + 6 = 35
15 + 15 + 5 = 35
15 + 16 + 4 = 35
15 + 17 + 3 = 35
15 + 18 + 2 = 35
15 + 19 + 1 = 35
15 + 20 + 0 = 35
16 + 0 + 19 = 35
16 + 1 + 18 = 35
16 + 2 + 17 = 35
16 + 3 + 16 = 35
16 + 4 + 15 = 35
16 + 5 + 14 = 35
16 + 6 + 13 = 35
16 + 7 + 12 = 35
16 + 8 + 11 = 35
16 + 9 + 10 = 35
16 + 10 + 9 = 35
16 + 11 + 8 = 35
16 + 12 + 7 = 35
16 + 13 + 6 = 35
16 + 14 + 5 = 35
16 + 15 + 4 = 35
16 + 16 + 3 = 35
16 + 17 + 2 = 35
16 + 18 + 1 = 35
16 + 19 + 0 = 35
17 + 0 + 18 = 35
17 + 1 + 17 = 35
17 + 2 + 16 = 35
17 + 3 + 15 = 35
17 + 4 + 14 = 35
17 + 5 + 13 = 35
17 + 6 + 12 = 35
17 + 7 + 11 = 35
17 + 8 + 10 = 35
17 + 9 + 9 = 35
17 + 10 + 8 = 35
17 + 11 + 7 = 35
17 + 12 + 6 = 35
17 + 13 + 5 = 35
17 + 14 + 4 = 35
17 + 15 + 3 = 35
17 + 16 + 2 = 35
17 + 17 + 1 = 35
17 + 18 + 0 = 35
18 + 0 + 17 = 35
18 + 1 + 16 = 35
18 + 2 + 15 = 35
18 + 3 + 14 = 35
18 + 4 + 13 = 35
18 + 5 + 12 = 35
18 + 6 + 11 = 35
18 + 7 + 10 = 35
18 + 8 + 9 = 35
18 + 9 + 8 = 35
18 + 10 + 7 = 35
18 + 11 + 6 = 35
18 + 12 + 5 = 35
18 + 13 + 4 = 35
18 + 14 + 3 = 35
18 + 15 + 2 = 35
18 + 16 + 1 = 35
18 + 17 + 0 = 35
19 + 0 + 16 = 35
19 + 1 + 15 = 35
19 + 2 + 14 = 35
19 + 3 + 13 = 35
19 + 4 + 12 = 35
19 + 5 + 11 = 35
19 + 6 + 10 = 35
19 + 7 + 9 = 35
19 + 8 + 8 = 35
19 + 9 + 7 = 35
19 + 10 + 6 = 35
19 + 11 + 5 = 35
19 + 12 + 4 = 35
19 + 13 + 3 = 35
19 + 14 + 2 = 35
19 + 15 + 1 = 35
19 + 16 + 0 = 35
20 + 0 + 15 = 35
20 + 1 + 14 = 35
20 + 2 + 13 = 35
20 + 3 + 12 = 35
20 + 4 + 11 = 35
20 + 5 + 10 = 35
20 + 6 + 9 = 35
20 + 7 + 8 = 35
20 + 8 + 7 = 35
20 + 9 + 6 = 35
20 + 10 + 5 = 35
20 + 11 + 4 = 35
20 + 12 + 3 = 35
20 + 13 + 2 = 35
20 + 14 + 1 = 35
20 + 15 + 0 = 35
21 + 0 + 14 = 35
21 + 1 + 13 = 35
21 + 2 + 12 = 35
21 + 3 + 11 = 35
21 + 4 + 10 = 35
21 + 5 + 9 = 35
21 + 6 + 8 = 35
21 + 7 + 7 = 35
21 + 8 + 6 = 35
21 + 9 + 5 = 35
21 + 10 + 4 = 35
21 + 11 + 3 = 35
21 + 12 + 2 = 35
21 + 13 + 1 = 35
21 + 14 + 0 = 35
22 + 0 + 13 = 35
22 + 1 + 12 = 35
22 + 2 + 11 = 35
22 + 3 + 10 = 35
22 + 4 + 9 = 35
22 + 5 + 8 = 35
22 + 6 + 7 = 35
22 + 7 + 6 = 35
22 + 8 + 5 = 35
22 + 9 + 4 = 35
22 + 10 + 3 = 35
22 + 11 + 2 = 35
22 + 12 + 1 = 35
22 + 13 + 0 = 35
23 + 0 + 12 = 35
23 + 1 + 11 = 35
23 + 2 + 10 = 35
23 + 3 + 9 = 35
23 + 4 + 8 = 35
23 + 5 + 7 = 35
23 + 6 + 6 = 35
23 + 7 + 5 = 35
23 + 8 + 4 = 35
23 + 9 + 3 = 35
23 + 10 + 2 = 35
23 + 11 + 1 = 35
23 + 12 + 0 = 35
24 + 0 + 11 = 35
24 + 1 + 10 = 35
24 + 2 + 9 = 35
24 + 3 + 8 = 35
24 + 4 + 7 = 35
24 + 5 + 6 = 35
24 + 6 + 5 = 35
24 + 7 + 4 = 35
24 + 8 + 3 = 35
24 + 9 + 2 = 35
24 + 10 + 1 = 35
24 + 11 + 0 = 35
25 + 0 + 10 = 35
25 + 1 + 9 = 35
25 + 2 + 8 = 35
25 + 3 + 7 = 35
25 + 4 + 6 = 35
25 + 5 + 5 = 35
25 + 6 + 4 = 35
25 + 7 + 3 = 35
25 + 8 + 2 = 35
25 + 9 + 1 = 35
25 + 10 + 0 = 35
26 + 0 + 9 = 35
26 + 1 + 8 = 35
26 + 2 + 7 = 35
26 + 3 + 6 = 35
26 + 4 + 5 = 35
26 + 5 + 4 = 35
26 + 6 + 3 = 35
26 + 7 + 2 = 35
26 + 8 + 1 = 35
26 + 9 + 0 = 35
27 + 0 + 8 = 35
27 + 1 + 7 = 35
27 + 2 + 6 = 35
27 + 3 + 5 = 35
27 + 4 + 4 = 35
27 + 5 + 3 = 35
27 + 6 + 2 = 35
27 + 7 + 1 = 35
27 + 8 + 0 = 35
28 + 0 + 7 = 35
28 + 1 + 6 = 35
28 + 2 + 5 = 35
28 + 3 + 4 = 35
28 + 4 + 3 = 35
28 + 5 + 2 = 35
28 + 6 + 1 = 35
28 + 7 + 0 = 35
29 + 0 + 6 = 35
29 + 1 + 5 = 35
29 + 2 + 4 = 35
29 + 3 + 3 = 35
29 + 4 + 2 = 35
29 + 5 + 1 = 35
29 + 6 + 0 = 35
30 + 0 + 5 = 35
30 + 1 + 4 = 35
30 + 2 + 3 = 35
30 + 3 + 2 = 35
30 + 4 + 1 = 35
30 + 5 + 0 = 35
31 + 0 + 4 = 35
31 + 1 + 3 = 35
31 + 2 + 2 = 35
31 + 3 + 1 = 35
31 + 4 + 0 = 35
32 + 0 + 3 = 35
32 + 1 + 2 = 35
32 + 2 + 1 = 35
32 + 3 + 0 = 35
33 + 0 + 2 = 35
33 + 1 + 1 = 35
33 + 2 + 0 = 35
34 + 0 + 1 = 35
34 + 1 + 0 = 35
A végeredményből látjuk, hogy indokolt volt a bemeneti értékek szűkítése, hiszen már viszonylag kis értékek esetén is (összeg = 35 és 3 db szám) 663 soros listánk keletkezett.
Hirtelen ötlettől vezéreltetve tegyünk a kódba egy olyan változót, amely a sorok számát számolja meg! Ezt külön eljárásban meg tudjuk oldani...
static void sorSzamlalas(){
System.out.print(sorSzamlalo + ". sor - ");
sorSzamlalo++;
}
...bár magát a változót "globális" (osztály) szinten kell deklarálnunk, mert mindenkinek látnia kell:
static int sorSzamlalo = 1;
import java.util.Scanner;
public class Main {
static int osszeg = 0;
static int szamMennyiseg = 0;
static int sorSzamlalo = 1;
static void adatBekeres(){
Scanner in = new Scanner(System.in);
do{
System.out.println("Kérem, hogy adja
meg az összeget (1 és 1000 között)!");
String osszegString = in.nextLine();
osszeg = Integer.parseInt(osszegString);
}while(osszeg < 1 || osszeg > 1000);
do{
System.out.println("Kérem, hogy adja
meg, hány szám összegét keresi (2 és 5 között)!");
String szamString = in.nextLine();
szamMennyiseg = Integer.parseInt(szamString);
}while(szamMennyiseg > 5 || szamMennyiseg < 2);
in.close();
}
static void listazo2Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
if((i + j) ==
osszeg){
sorSzamlalas();
System.out.print(i + " + " + j + " = " + osszeg + "\n");
}
}
}
}
static void listazo3Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
if((i + j + k) == osszeg){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " = " + osszeg + "\n");
}
}
}
}
}
static void listazo4Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
for(int l = 0; l < osszeg; l++){
if((i + j + k + l) == osszeg){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " + " + l + " = " + osszeg +
"\n");
}
}
}
}
}
}
static void listazo5Szam(){
for(int i = 0; i < osszeg; i++){
for(int j = 0; j < osszeg; j++){
for(int k =
0; k < osszeg; k++){
for(int l = 0; l < osszeg; l++){
for(int m = 0; m < osszeg; m++){
if((i + j + k + l + m) == osszeg){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " + " + l + " + " + m + " = " +
osszeg + "\n");
}
}
}
}
}
}
}
static void sorSzamlalas(){
System.out.print(sorSzamlalo + ". sor - ");
sorSzamlalo++;
}
public static void main(String[] args) {
System.out.println("Ez a program megtalálja azon számokat,
amelyek összege az Ön által megadott szám.");
adatBekeres();
switch(szamMennyiseg){
case 2: listazo2Szam(); break;
case 3: listazo3Szam(); break;
case 4: listazo4Szam(); break;
case 5: listazo5Szam(); break;
}
}
}
Végeredmény:
1. sor - 0 + 1 + 34 = 35
2. sor - 0 + 2 + 33 = 35
3. sor - 0 + 3 + 32 = 35
4. sor - 0 + 4 + 31 = 35
5. sor - 0 + 5 + 30 = 35
6. sor - 0 + 6 + 29 = 35
7. sor - 0 + 7 + 28 = 35
8. sor - 0 + 8 + 27 = 35
9. sor - 0 + 9 + 26 = 35
10. sor - 0 + 10 + 25 = 35
11. sor - 0 + 11 + 24 = 35
12. sor - 0 + 12 + 23 = 35
13. sor - 0 + 13 + 22 = 35
14. sor - 0 + 14 + 21 = 35
15. sor - 0 + 15 + 20 = 35
16. sor - 0 + 16 + 19 = 35
17. sor - 0 + 17 + 18 = 35
18. sor - 0 + 18 + 17 = 35
19. sor - 0 + 19 + 16 = 35
20. sor - 0 + 20 + 15 = 35
21. sor - 0 + 21 + 14 = 35
22. sor - 0 + 22 + 13 = 35
23. sor - 0 + 23 + 12 = 35
24. sor - 0 + 24 + 11 = 35
25. sor - 0 + 25 + 10 = 35
26. sor - 0 + 26 + 9 = 35
27. sor - 0 + 27 + 8 = 35
28. sor - 0 + 28 + 7 = 35
29. sor - 0 + 29 + 6 = 35
30. sor - 0 + 30 + 5 = 35
31. sor - 0 + 31 + 4 = 35
32. sor - 0 + 32 + 3 = 35
33. sor - 0 + 33 + 2 = 35
34. sor - 0 + 34 + 1 = 35
35. sor - 1 + 0 + 34 = 35
36. sor - 1 + 1 + 33 = 35
37. sor - 1 + 2 + 32 = 35
38. sor - 1 + 3 + 31 = 35
39. sor - 1 + 4 + 30 = 35
40. sor - 1 + 5 + 29 = 35
41. sor - 1 + 6 + 28 = 35
42. sor - 1 + 7 + 27 = 35
43. sor - 1 + 8 + 26 = 35
44. sor - 1 + 9 + 25 = 35
45. sor - 1 + 10 + 24 = 35
46. sor - 1 + 11 + 23 = 35
47. sor - 1 + 12 + 22 = 35
48. sor - 1 + 13 + 21 = 35
49. sor - 1 + 14 + 20 = 35
50. sor - 1 + 15 + 19 = 35
51. sor - 1 + 16 + 18 = 35
52. sor - 1 + 17 + 17 = 35
53. sor - 1 + 18 + 16 = 35
54. sor - 1 + 19 + 15 = 35
55. sor - 1 + 20 + 14 = 35
56. sor - 1 + 21 + 13 = 35
57. sor - 1 + 22 + 12 = 35
58. sor - 1 + 23 + 11 = 35
59. sor - 1 + 24 + 10 = 35
60. sor - 1 + 25 + 9 = 35
61. sor - 1 + 26 + 8 = 35
62. sor - 1 + 27 + 7 = 35
63. sor - 1 + 28 + 6 = 35
64. sor - 1 + 29 + 5 = 35
65. sor - 1 + 30 + 4 = 35
66. sor - 1 + 31 + 3 = 35
67. sor - 1 + 32 + 2 = 35
68. sor - 1 + 33 + 1 = 35
69. sor - 1 + 34 + 0 = 35
70. sor - 2 + 0 + 33 = 35
71. sor - 2 + 1 + 32 = 35
72. sor - 2 + 2 + 31 = 35
73. sor - 2 + 3 + 30 = 35
74. sor - 2 + 4 + 29 = 35
75. sor - 2 + 5 + 28 = 35
76. sor - 2 + 6 + 27 = 35
77. sor - 2 + 7 + 26 = 35
78. sor - 2 + 8 + 25 = 35
79. sor - 2 + 9 + 24 = 35
80. sor - 2 + 10 + 23 = 35
81. sor - 2 + 11 + 22 = 35
82. sor - 2 + 12 + 21 = 35
83. sor - 2 + 13 + 20 = 35
84. sor - 2 + 14 + 19 = 35
85. sor - 2 + 15 + 18 = 35
86. sor - 2 + 16 + 17 = 35
87. sor - 2 + 17 + 16 = 35
88. sor - 2 + 18 + 15 = 35
89. sor - 2 + 19 + 14 = 35
90. sor - 2 + 20 + 13 = 35
91. sor - 2 + 21 + 12 = 35
92. sor - 2 + 22 + 11 = 35
93. sor - 2 + 23 + 10 = 35
94. sor - 2 + 24 + 9 = 35
95. sor - 2 + 25 + 8 = 35
96. sor - 2 + 26 + 7 = 35
97. sor - 2 + 27 + 6 = 35
98. sor - 2 + 28 + 5 = 35
99. sor - 2 + 29 + 4 = 35
100. sor - 2 + 30 + 3 = 35
101. sor - 2 + 31 + 2 = 35
102. sor - 2 + 32 + 1 = 35
103. sor - 2 + 33 + 0 = 35
104. sor - 3 + 0 + 32 = 35
105. sor - 3 + 1 + 31 = 35
106. sor - 3 + 2 + 30 = 35
107. sor - 3 + 3 + 29 = 35
108. sor - 3 + 4 + 28 = 35
109. sor - 3 + 5 + 27 = 35
110. sor - 3 + 6 + 26 = 35
111. sor - 3 + 7 + 25 = 35
112. sor - 3 + 8 + 24 = 35
113. sor - 3 + 9 + 23 = 35
114. sor - 3 + 10 + 22 = 35
115. sor - 3 + 11 + 21 = 35
116. sor - 3 + 12 + 20 = 35
117. sor - 3 + 13 + 19 = 35
118. sor - 3 + 14 + 18 = 35
119. sor - 3 + 15 + 17 = 35
120. sor - 3 + 16 + 16 = 35
121. sor - 3 + 17 + 15 = 35
122. sor - 3 + 18 + 14 = 35
123. sor - 3 + 19 + 13 = 35
124. sor - 3 + 20 + 12 = 35
125. sor - 3 + 21 + 11 = 35
126. sor - 3 + 22 + 10 = 35
127. sor - 3 + 23 + 9 = 35
128. sor - 3 + 24 + 8 = 35
129. sor - 3 + 25 + 7 = 35
130. sor - 3 + 26 + 6 = 35
131. sor - 3 + 27 + 5 = 35
132. sor - 3 + 28 + 4 = 35
133. sor - 3 + 29 + 3 = 35
134. sor - 3 + 30 + 2 = 35
135. sor - 3 + 31 + 1 = 35
136. sor - 3 + 32 + 0 = 35
137. sor - 4 + 0 + 31 = 35
138. sor - 4 + 1 + 30 = 35
139. sor - 4 + 2 + 29 = 35
140. sor - 4 + 3 + 28 = 35
141. sor - 4 + 4 + 27 = 35
142. sor - 4 + 5 + 26 = 35
143. sor - 4 + 6 + 25 = 35
144. sor - 4 + 7 + 24 = 35
145. sor - 4 + 8 + 23 = 35
146. sor - 4 + 9 + 22 = 35
147. sor - 4 + 10 + 21 = 35
148. sor - 4 + 11 + 20 = 35
149. sor - 4 + 12 + 19 = 35
150. sor - 4 + 13 + 18 = 35
151. sor - 4 + 14 + 17 = 35
152. sor - 4 + 15 + 16 = 35
153. sor - 4 + 16 + 15 = 35
154. sor - 4 + 17 + 14 = 35
155. sor - 4 + 18 + 13 = 35
156. sor - 4 + 19 + 12 = 35
157. sor - 4 + 20 + 11 = 35
158. sor - 4 + 21 + 10 = 35
159. sor - 4 + 22 + 9 = 35
160. sor - 4 + 23 + 8 = 35
161. sor - 4 + 24 + 7 = 35
162. sor - 4 + 25 + 6 = 35
163. sor - 4 + 26 + 5 = 35
164. sor - 4 + 27 + 4 = 35
165. sor - 4 + 28 + 3 = 35
166. sor - 4 + 29 + 2 = 35
167. sor - 4 + 30 + 1 = 35
168. sor - 4 + 31 + 0 = 35
169. sor - 5 + 0 + 30 = 35
170. sor - 5 + 1 + 29 = 35
171. sor - 5 + 2 + 28 = 35
172. sor - 5 + 3 + 27 = 35
173. sor - 5 + 4 + 26 = 35
174. sor - 5 + 5 + 25 = 35
175. sor - 5 + 6 + 24 = 35
176. sor - 5 + 7 + 23 = 35
177. sor - 5 + 8 + 22 = 35
178. sor - 5 + 9 + 21 = 35
179. sor - 5 + 10 + 20 = 35
180. sor - 5 + 11 + 19 = 35
181. sor - 5 + 12 + 18 = 35
182. sor - 5 + 13 + 17 = 35
183. sor - 5 + 14 + 16 = 35
184. sor - 5 + 15 + 15 = 35
185. sor - 5 + 16 + 14 = 35
186. sor - 5 + 17 + 13 = 35
187. sor - 5 + 18 + 12 = 35
188. sor - 5 + 19 + 11 = 35
189. sor - 5 + 20 + 10 = 35
190. sor - 5 + 21 + 9 = 35
191. sor - 5 + 22 + 8 = 35
192. sor - 5 + 23 + 7 = 35
193. sor - 5 + 24 + 6 = 35
194. sor - 5 + 25 + 5 = 35
195. sor - 5 + 26 + 4 = 35
196. sor - 5 + 27 + 3 = 35
197. sor - 5 + 28 + 2 = 35
198. sor - 5 + 29 + 1 = 35
199. sor - 5 + 30 + 0 = 35
200. sor - 6 + 0 + 29 = 35
201. sor - 6 + 1 + 28 = 35
202. sor - 6 + 2 + 27 = 35
203. sor - 6 + 3 + 26 = 35
204. sor - 6 + 4 + 25 = 35
205. sor - 6 + 5 + 24 = 35
206. sor - 6 + 6 + 23 = 35
207. sor - 6 + 7 + 22 = 35
208. sor - 6 + 8 + 21 = 35
209. sor - 6 + 9 + 20 = 35
210. sor - 6 + 10 + 19 = 35
211. sor - 6 + 11 + 18 = 35
212. sor - 6 + 12 + 17 = 35
213. sor - 6 + 13 + 16 = 35
214. sor - 6 + 14 + 15 = 35
215. sor - 6 + 15 + 14 = 35
216. sor - 6 + 16 + 13 = 35
217. sor - 6 + 17 + 12 = 35
218. sor - 6 + 18 + 11 = 35
219. sor - 6 + 19 + 10 = 35
220. sor - 6 + 20 + 9 = 35
221. sor - 6 + 21 + 8 = 35
222. sor - 6 + 22 + 7 = 35
223. sor - 6 + 23 + 6 = 35
224. sor - 6 + 24 + 5 = 35
225. sor - 6 + 25 + 4 = 35
226. sor - 6 + 26 + 3 = 35
227. sor - 6 + 27 + 2 = 35
228. sor - 6 + 28 + 1 = 35
229. sor - 6 + 29 + 0 = 35
230. sor - 7 + 0 + 28 = 35
231. sor - 7 + 1 + 27 = 35
232. sor - 7 + 2 + 26 = 35
233. sor - 7 + 3 + 25 = 35
234. sor - 7 + 4 + 24 = 35
235. sor - 7 + 5 + 23 = 35
236. sor - 7 + 6 + 22 = 35
237. sor - 7 + 7 + 21 = 35
238. sor - 7 + 8 + 20 = 35
239. sor - 7 + 9 + 19 = 35
240. sor - 7 + 10 + 18 = 35
241. sor - 7 + 11 + 17 = 35
242. sor - 7 + 12 + 16 = 35
243. sor - 7 + 13 + 15 = 35
244. sor - 7 + 14 + 14 = 35
245. sor - 7 + 15 + 13 = 35
246. sor - 7 + 16 + 12 = 35
247. sor - 7 + 17 + 11 = 35
248. sor - 7 + 18 + 10 = 35
249. sor - 7 + 19 + 9 = 35
250. sor - 7 + 20 + 8 = 35
251. sor - 7 + 21 + 7 = 35
252. sor - 7 + 22 + 6 = 35
253. sor - 7 + 23 + 5 = 35
254. sor - 7 + 24 + 4 = 35
255. sor - 7 + 25 + 3 = 35
256. sor - 7 + 26 + 2 = 35
257. sor - 7 + 27 + 1 = 35
258. sor - 7 + 28 + 0 = 35
259. sor - 8 + 0 + 27 = 35
260. sor - 8 + 1 + 26 = 35
261. sor - 8 + 2 + 25 = 35
262. sor - 8 + 3 + 24 = 35
263. sor - 8 + 4 + 23 = 35
264. sor - 8 + 5 + 22 = 35
265. sor - 8 + 6 + 21 = 35
266. sor - 8 + 7 + 20 = 35
267. sor - 8 + 8 + 19 = 35
268. sor - 8 + 9 + 18 = 35
269. sor - 8 + 10 + 17 = 35
270. sor - 8 + 11 + 16 = 35
271. sor - 8 + 12 + 15 = 35
272. sor - 8 + 13 + 14 = 35
273. sor - 8 + 14 + 13 = 35
274. sor - 8 + 15 + 12 = 35
275. sor - 8 + 16 + 11 = 35
276. sor - 8 + 17 + 10 = 35
277. sor - 8 + 18 + 9 = 35
278. sor - 8 + 19 + 8 = 35
279. sor - 8 + 20 + 7 = 35
280. sor - 8 + 21 + 6 = 35
281. sor - 8 + 22 + 5 = 35
282. sor - 8 + 23 + 4 = 35
283. sor - 8 + 24 + 3 = 35
284. sor - 8 + 25 + 2 = 35
285. sor - 8 + 26 + 1 = 35
286. sor - 8 + 27 + 0 = 35
287. sor - 9 + 0 + 26 = 35
288. sor - 9 + 1 + 25 = 35
289. sor - 9 + 2 + 24 = 35
290. sor - 9 + 3 + 23 = 35
291. sor - 9 + 4 + 22 = 35
292. sor - 9 + 5 + 21 = 35
293. sor - 9 + 6 + 20 = 35
294. sor - 9 + 7 + 19 = 35
295. sor - 9 + 8 + 18 = 35
296. sor - 9 + 9 + 17 = 35
297. sor - 9 + 10 + 16 = 35
298. sor - 9 + 11 + 15 = 35
299. sor - 9 + 12 + 14 = 35
300. sor - 9 + 13 + 13 = 35
301. sor - 9 + 14 + 12 = 35
302. sor - 9 + 15 + 11 = 35
303. sor - 9 + 16 + 10 = 35
304. sor - 9 + 17 + 9 = 35
305. sor - 9 + 18 + 8 = 35
306. sor - 9 + 19 + 7 = 35
307. sor - 9 + 20 + 6 = 35
308. sor - 9 + 21 + 5 = 35
309. sor - 9 + 22 + 4 = 35
310. sor - 9 + 23 + 3 = 35
311. sor - 9 + 24 + 2 = 35
312. sor - 9 + 25 + 1 = 35
313. sor - 9 + 26 + 0 = 35
314. sor - 10 + 0 + 25 = 35
315. sor - 10 + 1 + 24 = 35
316. sor - 10 + 2 + 23 = 35
317. sor - 10 + 3 + 22 = 35
318. sor - 10 + 4 + 21 = 35
319. sor - 10 + 5 + 20 = 35
320. sor - 10 + 6 + 19 = 35
321. sor - 10 + 7 + 18 = 35
322. sor - 10 + 8 + 17 = 35
323. sor - 10 + 9 + 16 = 35
324. sor - 10 + 10 + 15 = 35
325. sor - 10 + 11 + 14 = 35
326. sor - 10 + 12 + 13 = 35
327. sor - 10 + 13 + 12 = 35
328. sor - 10 + 14 + 11 = 35
329. sor - 10 + 15 + 10 = 35
330. sor - 10 + 16 + 9 = 35
331. sor - 10 + 17 + 8 = 35
332. sor - 10 + 18 + 7 = 35
333. sor - 10 + 19 + 6 = 35
334. sor - 10 + 20 + 5 = 35
335. sor - 10 + 21 + 4 = 35
336. sor - 10 + 22 + 3 = 35
337. sor - 10 + 23 + 2 = 35
338. sor - 10 + 24 + 1 = 35
339. sor - 10 + 25 + 0 = 35
340. sor - 11 + 0 + 24 = 35
341. sor - 11 + 1 + 23 = 35
342. sor - 11 + 2 + 22 = 35
343. sor - 11 + 3 + 21 = 35
344. sor - 11 + 4 + 20 = 35
345. sor - 11 + 5 + 19 = 35
346. sor - 11 + 6 + 18 = 35
347. sor - 11 + 7 + 17 = 35
348. sor - 11 + 8 + 16 = 35
349. sor - 11 + 9 + 15 = 35
350. sor - 11 + 10 + 14 = 35
351. sor - 11 + 11 + 13 = 35
352. sor - 11 + 12 + 12 = 35
353. sor - 11 + 13 + 11 = 35
354. sor - 11 + 14 + 10 = 35
355. sor - 11 + 15 + 9 = 35
356. sor - 11 + 16 + 8 = 35
357. sor - 11 + 17 + 7 = 35
358. sor - 11 + 18 + 6 = 35
359. sor - 11 + 19 + 5 = 35
360. sor - 11 + 20 + 4 = 35
361. sor - 11 + 21 + 3 = 35
362. sor - 11 + 22 + 2 = 35
363. sor - 11 + 23 + 1 = 35
364. sor - 11 + 24 + 0 = 35
365. sor - 12 + 0 + 23 = 35
366. sor - 12 + 1 + 22 = 35
367. sor - 12 + 2 + 21 = 35
368. sor - 12 + 3 + 20 = 35
369. sor - 12 + 4 + 19 = 35
370. sor - 12 + 5 + 18 = 35
371. sor - 12 + 6 + 17 = 35
372. sor - 12 + 7 + 16 = 35
373. sor - 12 + 8 + 15 = 35
374. sor - 12 + 9 + 14 = 35
375. sor - 12 + 10 + 13 = 35
376. sor - 12 + 11 + 12 = 35
377. sor - 12 + 12 + 11 = 35
378. sor - 12 + 13 + 10 = 35
379. sor - 12 + 14 + 9 = 35
380. sor - 12 + 15 + 8 = 35
381. sor - 12 + 16 + 7 = 35
382. sor - 12 + 17 + 6 = 35
383. sor - 12 + 18 + 5 = 35
384. sor - 12 + 19 + 4 = 35
385. sor - 12 + 20 + 3 = 35
386. sor - 12 + 21 + 2 = 35
387. sor - 12 + 22 + 1 = 35
388. sor - 12 + 23 + 0 = 35
389. sor - 13 + 0 + 22 = 35
390. sor - 13 + 1 + 21 = 35
391. sor - 13 + 2 + 20 = 35
392. sor - 13 + 3 + 19 = 35
393. sor - 13 + 4 + 18 = 35
394. sor - 13 + 5 + 17 = 35
395. sor - 13 + 6 + 16 = 35
396. sor - 13 + 7 + 15 = 35
397. sor - 13 + 8 + 14 = 35
398. sor - 13 + 9 + 13 = 35
399. sor - 13 + 10 + 12 = 35
400. sor - 13 + 11 + 11 = 35
401. sor - 13 + 12 + 10 = 35
402. sor - 13 + 13 + 9 = 35
403. sor - 13 + 14 + 8 = 35
404. sor - 13 + 15 + 7 = 35
405. sor - 13 + 16 + 6 = 35
406. sor - 13 + 17 + 5 = 35
407. sor - 13 + 18 + 4 = 35
408. sor - 13 + 19 + 3 = 35
409. sor - 13 + 20 + 2 = 35
410. sor - 13 + 21 + 1 = 35
411. sor - 13 + 22 + 0 = 35
412. sor - 14 + 0 + 21 = 35
413. sor - 14 + 1 + 20 = 35
414. sor - 14 + 2 + 19 = 35
415. sor - 14 + 3 + 18 = 35
416. sor - 14 + 4 + 17 = 35
417. sor - 14 + 5 + 16 = 35
418. sor - 14 + 6 + 15 = 35
419. sor - 14 + 7 + 14 = 35
420. sor - 14 + 8 + 13 = 35
421. sor - 14 + 9 + 12 = 35
422. sor - 14 + 10 + 11 = 35
423. sor - 14 + 11 + 10 = 35
424. sor - 14 + 12 + 9 = 35
425. sor - 14 + 13 + 8 = 35
426. sor - 14 + 14 + 7 = 35
427. sor - 14 + 15 + 6 = 35
428. sor - 14 + 16 + 5 = 35
429. sor - 14 + 17 + 4 = 35
430. sor - 14 + 18 + 3 = 35
431. sor - 14 + 19 + 2 = 35
432. sor - 14 + 20 + 1 = 35
433. sor - 14 + 21 + 0 = 35
434. sor - 15 + 0 + 20 = 35
435. sor - 15 + 1 + 19 = 35
436. sor - 15 + 2 + 18 = 35
437. sor - 15 + 3 + 17 = 35
438. sor - 15 + 4 + 16 = 35
439. sor - 15 + 5 + 15 = 35
440. sor - 15 + 6 + 14 = 35
441. sor - 15 + 7 + 13 = 35
442. sor - 15 + 8 + 12 = 35
443. sor - 15 + 9 + 11 = 35
444. sor - 15 + 10 + 10 = 35
445. sor - 15 + 11 + 9 = 35
446. sor - 15 + 12 + 8 = 35
447. sor - 15 + 13 + 7 = 35
448. sor - 15 + 14 + 6 = 35
449. sor - 15 + 15 + 5 = 35
450. sor - 15 + 16 + 4 = 35
451. sor - 15 + 17 + 3 = 35
452. sor - 15 + 18 + 2 = 35
453. sor - 15 + 19 + 1 = 35
454. sor - 15 + 20 + 0 = 35
455. sor - 16 + 0 + 19 = 35
456. sor - 16 + 1 + 18 = 35
457. sor - 16 + 2 + 17 = 35
458. sor - 16 + 3 + 16 = 35
459. sor - 16 + 4 + 15 = 35
460. sor - 16 + 5 + 14 = 35
461. sor - 16 + 6 + 13 = 35
462. sor - 16 + 7 + 12 = 35
463. sor - 16 + 8 + 11 = 35
464. sor - 16 + 9 + 10 = 35
465. sor - 16 + 10 + 9 = 35
466. sor - 16 + 11 + 8 = 35
467. sor - 16 + 12 + 7 = 35
468. sor - 16 + 13 + 6 = 35
469. sor - 16 + 14 + 5 = 35
470. sor - 16 + 15 + 4 = 35
471. sor - 16 + 16 + 3 = 35
472. sor - 16 + 17 + 2 = 35
473. sor - 16 + 18 + 1 = 35
474. sor - 16 + 19 + 0 = 35
475. sor - 17 + 0 + 18 = 35
476. sor - 17 + 1 + 17 = 35
477. sor - 17 + 2 + 16 = 35
478. sor - 17 + 3 + 15 = 35
479. sor - 17 + 4 + 14 = 35
480. sor - 17 + 5 + 13 = 35
481. sor - 17 + 6 + 12 = 35
482. sor - 17 + 7 + 11 = 35
483. sor - 17 + 8 + 10 = 35
484. sor - 17 + 9 + 9 = 35
485. sor - 17 + 10 + 8 = 35
486. sor - 17 + 11 + 7 = 35
487. sor - 17 + 12 + 6 = 35
488. sor - 17 + 13 + 5 = 35
489. sor - 17 + 14 + 4 = 35
490. sor - 17 + 15 + 3 = 35
491. sor - 17 + 16 + 2 = 35
492. sor - 17 + 17 + 1 = 35
493. sor - 17 + 18 + 0 = 35
494. sor - 18 + 0 + 17 = 35
495. sor - 18 + 1 + 16 = 35
496. sor - 18 + 2 + 15 = 35
497. sor - 18 + 3 + 14 = 35
498. sor - 18 + 4 + 13 = 35
499. sor - 18 + 5 + 12 = 35
500. sor - 18 + 6 + 11 = 35
501. sor - 18 + 7 + 10 = 35
502. sor - 18 + 8 + 9 = 35
503. sor - 18 + 9 + 8 = 35
504. sor - 18 + 10 + 7 = 35
505. sor - 18 + 11 + 6 = 35
506. sor - 18 + 12 + 5 = 35
507. sor - 18 + 13 + 4 = 35
508. sor - 18 + 14 + 3 = 35
509. sor - 18 + 15 + 2 = 35
510. sor - 18 + 16 + 1 = 35
511. sor - 18 + 17 + 0 = 35
512. sor - 19 + 0 + 16 = 35
513. sor - 19 + 1 + 15 = 35
514. sor - 19 + 2 + 14 = 35
515. sor - 19 + 3 + 13 = 35
516. sor - 19 + 4 + 12 = 35
517. sor - 19 + 5 + 11 = 35
518. sor - 19 + 6 + 10 = 35
519. sor - 19 + 7 + 9 = 35
520. sor - 19 + 8 + 8 = 35
521. sor - 19 + 9 + 7 = 35
522. sor - 19 + 10 + 6 = 35
523. sor - 19 + 11 + 5 = 35
524. sor - 19 + 12 + 4 = 35
525. sor - 19 + 13 + 3 = 35
526. sor - 19 + 14 + 2 = 35
527. sor - 19 + 15 + 1 = 35
528. sor - 19 + 16 + 0 = 35
529. sor - 20 + 0 + 15 = 35
530. sor - 20 + 1 + 14 = 35
531. sor - 20 + 2 + 13 = 35
532. sor - 20 + 3 + 12 = 35
533. sor - 20 + 4 + 11 = 35
534. sor - 20 + 5 + 10 = 35
535. sor - 20 + 6 + 9 = 35
536. sor - 20 + 7 + 8 = 35
537. sor - 20 + 8 + 7 = 35
538. sor - 20 + 9 + 6 = 35
539. sor - 20 + 10 + 5 = 35
540. sor - 20 + 11 + 4 = 35
541. sor - 20 + 12 + 3 = 35
542. sor - 20 + 13 + 2 = 35
543. sor - 20 + 14 + 1 = 35
544. sor - 20 + 15 + 0 = 35
545. sor - 21 + 0 + 14 = 35
546. sor - 21 + 1 + 13 = 35
547. sor - 21 + 2 + 12 = 35
548. sor - 21 + 3 + 11 = 35
549. sor - 21 + 4 + 10 = 35
550. sor - 21 + 5 + 9 = 35
551. sor - 21 + 6 + 8 = 35
552. sor - 21 + 7 + 7 = 35
553. sor - 21 + 8 + 6 = 35
554. sor - 21 + 9 + 5 = 35
555. sor - 21 + 10 + 4 = 35
556. sor - 21 + 11 + 3 = 35
557. sor - 21 + 12 + 2 = 35
558. sor - 21 + 13 + 1 = 35
559. sor - 21 + 14 + 0 = 35
560. sor - 22 + 0 + 13 = 35
561. sor - 22 + 1 + 12 = 35
562. sor - 22 + 2 + 11 = 35
563. sor - 22 + 3 + 10 = 35
564. sor - 22 + 4 + 9 = 35
565. sor - 22 + 5 + 8 = 35
566. sor - 22 + 6 + 7 = 35
567. sor - 22 + 7 + 6 = 35
568. sor - 22 + 8 + 5 = 35
569. sor - 22 + 9 + 4 = 35
570. sor - 22 + 10 + 3 = 35
571. sor - 22 + 11 + 2 = 35
572. sor - 22 + 12 + 1 = 35
573. sor - 22 + 13 + 0 = 35
574. sor - 23 + 0 + 12 = 35
575. sor - 23 + 1 + 11 = 35
576. sor - 23 + 2 + 10 = 35
577. sor - 23 + 3 + 9 = 35
578. sor - 23 + 4 + 8 = 35
579. sor - 23 + 5 + 7 = 35
580. sor - 23 + 6 + 6 = 35
581. sor - 23 + 7 + 5 = 35
582. sor - 23 + 8 + 4 = 35
583. sor - 23 + 9 + 3 = 35
584. sor - 23 + 10 + 2 = 35
585. sor - 23 + 11 + 1 = 35
586. sor - 23 + 12 + 0 = 35
587. sor - 24 + 0 + 11 = 35
588. sor - 24 + 1 + 10 = 35
589. sor - 24 + 2 + 9 = 35
590. sor - 24 + 3 + 8 = 35
591. sor - 24 + 4 + 7 = 35
592. sor - 24 + 5 + 6 = 35
593. sor - 24 + 6 + 5 = 35
594. sor - 24 + 7 + 4 = 35
595. sor - 24 + 8 + 3 = 35
596. sor - 24 + 9 + 2 = 35
597. sor - 24 + 10 + 1 = 35
598. sor - 24 + 11 + 0 = 35
599. sor - 25 + 0 + 10 = 35
600. sor - 25 + 1 + 9 = 35
601. sor - 25 + 2 + 8 = 35
602. sor - 25 + 3 + 7 = 35
603. sor - 25 + 4 + 6 = 35
604. sor - 25 + 5 + 5 = 35
605. sor - 25 + 6 + 4 = 35
606. sor - 25 + 7 + 3 = 35
607. sor - 25 + 8 + 2 = 35
608. sor - 25 + 9 + 1 = 35
609. sor - 25 + 10 + 0 = 35
610. sor - 26 + 0 + 9 = 35
611. sor - 26 + 1 + 8 = 35
612. sor - 26 + 2 + 7 = 35
613. sor - 26 + 3 + 6 = 35
614. sor - 26 + 4 + 5 = 35
615. sor - 26 + 5 + 4 = 35
616. sor - 26 + 6 + 3 = 35
617. sor - 26 + 7 + 2 = 35
618. sor - 26 + 8 + 1 = 35
619. sor - 26 + 9 + 0 = 35
620. sor - 27 + 0 + 8 = 35
621. sor - 27 + 1 + 7 = 35
622. sor - 27 + 2 + 6 = 35
623. sor - 27 + 3 + 5 = 35
624. sor - 27 + 4 + 4 = 35
625. sor - 27 + 5 + 3 = 35
626. sor - 27 + 6 + 2 = 35
627. sor - 27 + 7 + 1 = 35
628. sor - 27 + 8 + 0 = 35
629. sor - 28 + 0 + 7 = 35
630. sor - 28 + 1 + 6 = 35
631. sor - 28 + 2 + 5 = 35
632. sor - 28 + 3 + 4 = 35
633. sor - 28 + 4 + 3 = 35
634. sor - 28 + 5 + 2 = 35
635. sor - 28 + 6 + 1 = 35
636. sor - 28 + 7 + 0 = 35
637. sor - 29 + 0 + 6 = 35
638. sor - 29 + 1 + 5 = 35
639. sor - 29 + 2 + 4 = 35
640. sor - 29 + 3 + 3 = 35
641. sor - 29 + 4 + 2 = 35
642. sor - 29 + 5 + 1 = 35
643. sor - 29 + 6 + 0 = 35
644. sor - 30 + 0 + 5 = 35
645. sor - 30 + 1 + 4 = 35
646. sor - 30 + 2 + 3 = 35
647. sor - 30 + 3 + 2 = 35
648. sor - 30 + 4 + 1 = 35
649. sor - 30 + 5 + 0 = 35
650. sor - 31 + 0 + 4 = 35
651. sor - 31 + 1 + 3 = 35
652. sor - 31 + 2 + 2 = 35
653. sor - 31 + 3 + 1 = 35
654. sor - 31 + 4 + 0 = 35
655. sor - 32 + 0 + 3 = 35
656. sor - 32 + 1 + 2 = 35
657. sor - 32 + 2 + 1 = 35
658. sor - 32 + 3 + 0 = 35
659. sor - 33 + 0 + 2 = 35
660. sor - 33 + 1 + 1 = 35
661. sor - 33 + 2 + 0 = 35
662. sor - 34 + 0 + 1 = 35
663. sor - 34 + 1 + 0 = 35
A következő lépés annak felfedezése, hogy a fenti alapkód roppant egyszerű eszközökkel alakítható át összegző listából szorzólistává. Ehhez csak a főfeltétel összegző alapműveleteit kell mindenhol szorzássá átírnunk (illetve értelemszerűen az összes, az összegzésre utaló kifejezést):
if((i * j * N) == szorzat)
import java.util.Scanner;
public class Main {
static int szorzat = 0;
static int szamMennyiseg = 0;
static int sorSzamlalo = 1;
static void adatBekeres(){
Scanner in = new Scanner(System.in);
do{
System.out.println("Kérem, hogy adja
meg a szorzatot (1 és 1000 között)!");
String szorzatString = in.nextLine();
szorzat = Integer.parseInt(szorzatString);
}while(szorzat < 1 || szorzat > 1000);
do{
System.out.println("Kérem, hogy adja
meg, hány szám szorzatát keresi (2 és 5 között)!");
String szamString = in.nextLine();
szamMennyiseg = Integer.parseInt(szamString);
}while(szamMennyiseg > 5 || szamMennyiseg < 2);
in.close();
}
static void listazo2Szam(){
for(int i = 0; i < szorzat; i++){
for(int j = 0; j < szorzat; j++){
if((i * j) ==
szorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " = " + szorzat + "\n");
}
}
}
}
static void listazo3Szam(){
for(int i = 0; i < szorzat; i++){
for(int j = 0; j < szorzat; j++){
for(int k =
0; k < szorzat; k++){
if((i * j * k) == szorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " = " +
szorzat + "\n");
}
}
}
}
}
static void listazo4Szam(){
for(int i = 0; i < szorzat; i++){
for(int j = 0; j < szorzat; j++){
for(int k =
0; k < szorzat; k++){
for(int l = 0; l < szorzat; l++){
if((i * j * k * l) == szorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " * " + l + " = " +
szorzat +
"\n");
}
}
}
}
}
}
static void listazo5Szam(){
for(int i = 0; i < szorzat; i++){
for(int j = 0; j < szorzat; j++){
for(int k =
0; k < szorzat; k++){
for(int l = 0; l < szorzat; l++){
for(int m = 0; m < szorzat; m++){
if((i * j * k * l * m) == szorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " * " + l + "
* " + m + " = " + szorzat + "\n");
}
}
}
}
}
}
}
static void sorSzamlalas(){
System.out.print(sorSzamlalo + ". sor - ");
sorSzamlalo++;
}
public static void main(String[] args) {
System.out.println("Ez a program megtalálja azon számokat,
amelyek szorzata az Ön által megadott szám.");
adatBekeres();
switch(szamMennyiseg){
case 2: listazo2Szam(); break;
case 3: listazo3Szam(); break;
case 4: listazo4Szam(); break;
case 5: listazo5Szam(); break;
}
}
}
Végeredmény:
Ez a program megtalálja azon számokat, amelyek szorzata
az Ön által megadott szám.
Kérem, hogy adja meg a szorzatot (1 és 1000 között)!
100
Kérem, hogy adja meg, hány szám szorzatát keresi (2 és 5 között)!
3
1. sor - 1 * 2 * 50 = 100
2. sor - 1 * 4 * 25 = 100
3. sor - 1 * 5 * 20 = 100
4. sor - 1 * 10 * 10 = 100
5. sor - 1 * 20 * 5 = 100
6. sor - 1 * 25 * 4 = 100
7. sor - 1 * 50 * 2 = 100
8. sor - 2 * 1 * 50 = 100
9. sor - 2 * 2 * 25 = 100
10. sor - 2 * 5 * 10 = 100
11. sor - 2 * 10 * 5 = 100
12. sor - 2 * 25 * 2 = 100
13. sor - 2 * 50 * 1 = 100
14. sor - 4 * 1 * 25 = 100
15. sor - 4 * 5 * 5 = 100
16. sor - 4 * 25 * 1 = 100
17. sor - 5 * 1 * 20 = 100
18. sor - 5 * 2 * 10 = 100
19. sor - 5 * 4 * 5 = 100
20. sor - 5 * 5 * 4 = 100
21. sor - 5 * 10 * 2 = 100
22. sor - 5 * 20 * 1 = 100
23. sor - 10 * 1 * 10 = 100
24. sor - 10 * 2 * 5 = 100
25. sor - 10 * 5 * 2 = 100
26. sor - 10 * 10 * 1 = 100
27. sor - 20 * 1 * 5 = 100
28. sor - 20 * 5 * 1 = 100
29. sor - 25 * 1 * 4 = 100
30. sor - 25 * 2 * 2 = 100
31. sor - 25 * 4 * 1 = 100
32. sor - 50 * 1 * 2 = 100
33. sor - 50 * 2 * 1 = 100
Ezek után viszonylag könnyű, sőt érdemes 1 újabb választási lehetőséget feldobnunk, amellyel a kód egységes összegző-, és szorzólistává alakítható. Ezt a már jól bevált hátultesztelő do - while ciklussal tehetjük meg:
do{
System.out.println("Kérem, adja meg, hogy összeget kíván-e
vagy szorzatot (csakis + vagy * jelet használjon)!");
String karakterString = in.nextLine();
muveletiJel = karakterString.charAt(0);
}while(muveletiJel != '+' && muveletiJel != '*');
Az implementált karakterellenőrzés bár nem old meg minden problémát, de egész megfelelő biztonsággal működik. Ezután a listázó metódusokba kell építenünk a döntési automatikát, amely az összegzés és a szorzatozás között fog váltani. Nézzük meg például a kétszámos metódus megoldását:
static void listazo2Szam(){
for(int i = 0; i < osszegVagySzorzat; i++){
for(int j = 0; j < osszegVagySzorzat;
j++){
if(muveletiJel
== '+'){
if((i + j) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " + " + j + " = " + osszegVagySzorzat + "\n");
}
}
else if((i *
j) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " = " + osszegVagySzorzat + "\n");
}
}
}
}
Végül nézzük meg az egységes összegző-, és szorzólista megoldását:
import java.util.Scanner;
public class Main {
static int osszegVagySzorzat = 0;
static int szamMennyiseg = 0;
static int sorSzamlalo = 1;
static char muveletiJel;
static void adatBekeres(){
Scanner in = new Scanner(System.in);
do{
System.out.println("Kérem, hogy adja
meg az összeget / szorzatot (1 és 1000 között)!");
String szorzatString = in.nextLine();
osszegVagySzorzat = Integer.parseInt(szorzatString);
}while(osszegVagySzorzat < 1 || osszegVagySzorzat > 1000);
do{
System.out.println("Kérem, hogy adja
meg, hány szám összegét / szorzatát keresi (2 és 5 között)!");
String szamString = in.nextLine();
szamMennyiseg = Integer.parseInt(szamString);
}while(szamMennyiseg > 5 || szamMennyiseg < 2);
do{
System.out.println("Kérem, adja meg,
hogy összeget kíván-e vagy szorzatot (csakis + vagy * jelet használjon)!");
String karakterString = in.nextLine();
muveletiJel = karakterString.charAt(0);
}while(muveletiJel != '+' && muveletiJel != '*');
in.close();
}
static void listazo2Szam(){
for(int i = 0; i < osszegVagySzorzat; i++){
for(int j = 0; j < osszegVagySzorzat;
j++){
if(muveletiJel
== '+'){
if((i + j) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " + " + j + " = " + osszegVagySzorzat + "\n");
}
}
else if((i *
j) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " = " + osszegVagySzorzat + "\n");
}
}
}
}
static void listazo3Szam(){
for(int i = 0; i < osszegVagySzorzat; i++){
for(int j = 0; j < osszegVagySzorzat;
j++){
for(int k =
0; k < osszegVagySzorzat; k++){
if(muveletiJel == '+'){
if((i + j + k) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " = " + osszegVagySzorzat +
"\n");
}
}
else if((i * j * k) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " = " + osszegVagySzorzat +
"\n");
}
}
}
}
}
static void listazo4Szam(){
for(int i = 0; i < osszegVagySzorzat; i++){
for(int j = 0; j < osszegVagySzorzat;
j++){
for(int k =
0; k < osszegVagySzorzat; k++){
for(int l = 0; l < osszegVagySzorzat; l++){
if(muveletiJel == '+'){
if((i + j + k + l) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " + " + l + " = " +
osszegVagySzorzat + "\n");
}
}
else if((i * j * k * l) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " * " + l + " = " +
osszegVagySzorzat + "\n");
}
}
}
}
}
}
static void listazo5Szam(){
for(int i = 0; i < osszegVagySzorzat; i++){
for(int j = 0; j < osszegVagySzorzat;
j++){
for(int k =
0; k < osszegVagySzorzat; k++){
for(int l = 0; l < osszegVagySzorzat; l++){
for(int m = 0; m < osszegVagySzorzat; m++){
if(muveletiJel == '+'){
if((i + j + k + l + m) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " + " + j + " + " + k + " + " + l + " + " + m + " = " +
osszegVagySzorzat + "\n");
}
}
else if((i * j * k * l * m) == osszegVagySzorzat){
sorSzamlalas();
System.out.print(i + " * " + j + " * " + k + " * " + l + " * " + m + " = " +
osszegVagySzorzat + "\n");
}
}
}
}
}
}
}
static void sorSzamlalas(){
System.out.print(sorSzamlalo + ". sor - ");
sorSzamlalo++;
}
public static void main(String[] args) {
System.out.println("Ez a program megtalálja azon számokat,
amelyek szorzata az Ön által megadott szám.");
adatBekeres();
switch(szamMennyiseg){
case 2: listazo2Szam(); break;
case 3: listazo3Szam(); break;
case 4: listazo4Szam(); break;
case 5: listazo5Szam(); break;
}
}
}
Végeredmény:
Ez a program megtalálja azon számokat, amelyek
szorzata az Ön által megadott szám.
Kérem, hogy adja meg az összeget / szorzatot (1 és 1000 között)!
20
Kérem, hogy adja meg, hány szám összegét / szorzatát keresi (2 és 5 között)!
5
Kérem, adja meg, hogy összeget kíván-e vagy szorzatot (csakis + vagy * jelet
használjon)!
s
Kérem, adja meg, hogy összeget kíván-e vagy szorzatot (csakis + vagy * jelet
használjon)!
ad
Kérem, adja meg, hogy összeget kíván-e vagy szorzatot (csakis + vagy * jelet
használjon)!
*
1. sor - 1 * 1 * 1 * 2 * 10 = 20
2. sor - 1 * 1 * 1 * 4 * 5 = 20
3. sor - 1 * 1 * 1 * 5 * 4 = 20
4. sor - 1 * 1 * 1 * 10 * 2 = 20
5. sor - 1 * 1 * 2 * 1 * 10 = 20
6. sor - 1 * 1 * 2 * 2 * 5 = 20
7. sor - 1 * 1 * 2 * 5 * 2 = 20
8. sor - 1 * 1 * 2 * 10 * 1 = 20
9. sor - 1 * 1 * 4 * 1 * 5 = 20
10. sor - 1 * 1 * 4 * 5 * 1 = 20
11. sor - 1 * 1 * 5 * 1 * 4 = 20
12. sor - 1 * 1 * 5 * 2 * 2 = 20
13. sor - 1 * 1 * 5 * 4 * 1 = 20
14. sor - 1 * 1 * 10 * 1 * 2 = 20
15. sor - 1 * 1 * 10 * 2 * 1 = 20
16. sor - 1 * 2 * 1 * 1 * 10 = 20
17. sor - 1 * 2 * 1 * 2 * 5 = 20
18. sor - 1 * 2 * 1 * 5 * 2 = 20
19. sor - 1 * 2 * 1 * 10 * 1 = 20
20. sor - 1 * 2 * 2 * 1 * 5 = 20
21. sor - 1 * 2 * 2 * 5 * 1 = 20
22. sor - 1 * 2 * 5 * 1 * 2 = 20
23. sor - 1 * 2 * 5 * 2 * 1 = 20
24. sor - 1 * 2 * 10 * 1 * 1 = 20
25. sor - 1 * 4 * 1 * 1 * 5 = 20
26. sor - 1 * 4 * 1 * 5 * 1 = 20
27. sor - 1 * 4 * 5 * 1 * 1 = 20
28. sor - 1 * 5 * 1 * 1 * 4 = 20
29. sor - 1 * 5 * 1 * 2 * 2 = 20
30. sor - 1 * 5 * 1 * 4 * 1 = 20
31. sor - 1 * 5 * 2 * 1 * 2 = 20
32. sor - 1 * 5 * 2 * 2 * 1 = 20
33. sor - 1 * 5 * 4 * 1 * 1 = 20
34. sor - 1 * 10 * 1 * 1 * 2 = 20
35. sor - 1 * 10 * 1 * 2 * 1 = 20
36. sor - 1 * 10 * 2 * 1 * 1 = 20
37. sor - 2 * 1 * 1 * 1 * 10 = 20
38. sor - 2 * 1 * 1 * 2 * 5 = 20
39. sor - 2 * 1 * 1 * 5 * 2 = 20
40. sor - 2 * 1 * 1 * 10 * 1 = 20
41. sor - 2 * 1 * 2 * 1 * 5 = 20
42. sor - 2 * 1 * 2 * 5 * 1 = 20
43. sor - 2 * 1 * 5 * 1 * 2 = 20
44. sor - 2 * 1 * 5 * 2 * 1 = 20
45. sor - 2 * 1 * 10 * 1 * 1 = 20
46. sor - 2 * 2 * 1 * 1 * 5 = 20
47. sor - 2 * 2 * 1 * 5 * 1 = 20
48. sor - 2 * 2 * 5 * 1 * 1 = 20
49. sor - 2 * 5 * 1 * 1 * 2 = 20
50. sor - 2 * 5 * 1 * 2 * 1 = 20
51. sor - 2 * 5 * 2 * 1 * 1 = 20
52. sor - 2 * 10 * 1 * 1 * 1 = 20
53. sor - 4 * 1 * 1 * 1 * 5 = 20
54. sor - 4 * 1 * 1 * 5 * 1 = 20
55. sor - 4 * 1 * 5 * 1 * 1 = 20
56. sor - 4 * 5 * 1 * 1 * 1 = 20
57. sor - 5 * 1 * 1 * 1 * 4 = 20
58. sor - 5 * 1 * 1 * 2 * 2 = 20
59. sor - 5 * 1 * 1 * 4 * 1 = 20
60. sor - 5 * 1 * 2 * 1 * 2 = 20
61. sor - 5 * 1 * 2 * 2 * 1 = 20
62. sor - 5 * 1 * 4 * 1 * 1 = 20
63. sor - 5 * 2 * 1 * 1 * 2 = 20
64. sor - 5 * 2 * 1 * 2 * 1 = 20
65. sor - 5 * 2 * 2 * 1 * 1 = 20
66. sor - 5 * 4 * 1 * 1 * 1 = 20
67. sor - 10 * 1 * 1 * 1 * 2 = 20
68. sor - 10 * 1 * 1 * 2 * 1 = 20
69. sor - 10 * 1 * 2 * 1 * 1 = 20
70. sor - 10 * 2 * 1 * 1 * 1 = 20