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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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.