Gyakorlati alapok
Virtuális ötös lottó külön függvényeskedéssel II.
A fejezet gondolati és programozás-technikai előzményei a Virtuális ötös lottó és a Virtuális ötös lottó külön függvényeskedéssel című fejezetben olvashatók.
Ebben a fejezetben a virtuális ötöslottóra egy egészen más megoldást mutatunk meg. A megalkotott metódusok a következők:
-
benneVan(), - azt vizsgálja, hogy 1 és 90 közötti véletlenszám-generáláskor ne kerüljön azonos szám a rendszerbe,
-
tombFeltoltes(), - tömbfeltöltés véletlenszámokkal 1 és 90 között,
-
kiir(), - tömbtartalom kiírása,
-
metszet(), - tippelt és véletlenszám-generál számok összehasonlítása,
-
és a kötelező main().
Érdekes implementációs megoldás, hogy a tippelt és véletlenszám-generált számok összehasonlítása metszet-tétellel történik, hiszen ennek során éppúgy a közös elemeket és egyszeresen keressük.
A kód része Sike Zoltán informatika tanár oktatási anyagának. Nézzük meg a futtatható Java-kódot:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static boolean benneVan(int szam, int[] tomb) {
boolean talalat = false;
for(int i = 0; i < tomb.length; i++) {
if(szam == tomb[i]) {
talalat =
true;
break;
}
}
return talalat;
}
public static int[] tombFeltoltes(int elemszam, int hatar) {
int[] tomb = new int[elemszam];
Random rnd = new Random();
int szam;
for(int i = 0; i < tomb.length; i++) {
do{
szam =
rnd.nextInt(hatar) + 1;
}while (benneVan(szam, tomb));
tomb[i] = szam;
}
return tomb;
}
public static void kiir(int[] tomb){
System.out.println();
for (int i = 0; i < tomb.length; i++) {
System.out.print(tomb[i]+" ");
}
}
public static int[] metszet(int[] szamok, int[] tippek) {
int[] tomb = new int[szamok.length + 1];
int db = 0;
for (int i = 0; i < szamok.length; i++) {
if(benneVan(szamok[i], tippek))
{
db++;
tomb[db] =
szamok[i];
}
}
tomb[0] = db;
return tomb;
}
public static void main(String[] args) {
int[] szamok = tombFeltoltes(5, 90);
int[] tippek = new int[5];
int szam;
Scanner in = new Scanner(System.in);
for(int i = 0; i <= 4; i++) {
do{
System.out.print("Kérem a " + (i + 1) + ". számot: ");
szam =
in.nextInt();
}
while(benneVan(szam, tippek) || (szam < 1 || szam > 90));
tippek[i] = szam;
}
kiir(szamok);
kiir(tippek);
kiir(metszet(szamok, tippek));
}
}
Végeredmény:
Kérem a 1. számot: 1
Kérem a 2. számot: 23
Kérem a 3. számot: 40
Kérem a 4. számot: 1
Kérem a 4. számot: 56
Kérem a 5. számot: 68
83 13 33 82 55
1 23 40 56 68
0 0 0 0 0 0
Házi feladat - Szintén külön függvényben számoljuk meg és írjuk ki a találati számot!
A megoldás fejezete a képre kattintva érhető el.