Házi feladat
Találati szám
Alapfejezet - Virtuális ötös lottó külön függvényeskedéssel II.
Szintén külön függvényben számoljuk meg és írjuk ki a találati számot!
A feladat valójában átverős, hiszen a kódot tanulmányozva észrevehetjük, hogy ez már benne van metszet() függvény kimeneti tömbjének 0. elemében, csak ki kell nyernünk onnan. Én a problémát a lehető legegyszerűbb, talán kevésbé elegáns módszerrel oldottam meg: mivel a tippek tömbre nincs már többé szükségünk, beletöltöttem metszet(szamok, tippek) függvény kimeneti adattömbjét, mert 0. indexe tartalmazza a találati számot:
tippek = metszet(szamok, tippek);
System.out.print("\nÖnnek " + tippek[0] + " találata van.");
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));
tippek = metszet(szamok, tippek);
System.out.print("\nÖnnek " + tippek[0] + " találata van.");
}
}
Végeredmény:
Kérem a 1. számot: 1
Kérem a 2. számot: 20
Kérem a 3. számot: 20
Kérem a 3. számot: 57
Kérem a 4. számot: 34
Kérem a 5. számot: 89
63 70 79 40 11
1 20 57 34 89
0 0 0 0 0 0
Önnek 0 találata van.