Gyakorlati alapok

2 tömb metszete külön függvényekkel

www.informatika-programozas.hu - Ez a programozási feladat nehéz lesz!

 

Amennyiben a Tisztelt Olvasó tanulmányai során fentről lefelé halad a Honlaptérképben, ez a fejezet garantáltan még meg fogja haladni aktuális tudásszintjét, hiszen különutas függvénymegoldásokat tartalmaz (Gyakorlati alapok II. (main() + külön eljárás / függvény) című fejezetcsomagtól kezdve felfelé). A fejezetet azért illesztettem mégis ide, hogy a tömbműveletek 1 helyen, logikus egységben legyenek.

 

Kiindulási pontunk a 2 tömb metszete című fejezetben ismertetett kód...

 

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

 

 

 

 

 

 

 


public class Main {
    public static void main(String[] args) {
    int[] tomb1 = new int[] {1, 3, 5, 7, 9, 11, 13};
    int[] tomb2 = new int[] {2, 4, 6, 8, 9, 10, 13};
    int[] tombMetszet = new int[tomb2.length];

    for(int i = 0; i < tomb1.length; i++){
        for(int j = 0; j < tomb2.length; j++){
            if(tomb1[i] == tomb2[j]){
                tombMetszet[i] = tomb1[i];
            }
        }
    }
    for(int i = 0; i < tombMetszet.length; i++){
        System.out.print(tombMetszet[i] + " ");
        }
    }
}

 

Végeredmény:
0 0 0 0 9 0 13

 

...amelyet az egyik előző, a 2 tömb uniója külön függvényekkel című fejezetben ismertetett alapelvek szerint szabunk át. (Javaslatom, hogy a magyarázatokat ott olvassuk át.) Észrevehetjük, hogy tulajdonképpen csak a kód középső részét kell felhasználnunk, hiszen az valósítja meg a konkrét metszetképzést.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A kódot kimásolva, valamint a tombUnio függvény helyére beillesztve és persze további kötelező átnevezésekkel, kisebb igazításokkal a kód szinte azonnal működőképes, futtatható. Ez az objektumorientáltság igazi előnye!

 

Nézzük meg a futtatható Java-kódot:

 

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

 

 

 

 

 

 

 


import java.util.Random;

public class Main {

public static boolean benneVan(int szam, int[] tomb) {
    boolean vanIlyenSzam = false;
    for (int i = 0; i < tomb.length; i++) {
        if (szam == tomb[i]) {
            vanIlyenSzam = true;
            break;
            }
    }
    return vanIlyenSzam;
}

public static int[] tombFeltoltes() {
    int[] tomb = new int[10];
    Random rnd = new Random();
    int szam;
    for(int i = 0; i < tomb.length; i++) {
        do {
            szam = rnd.nextInt(100) + 1;
            }while(benneVan(szam, tomb));
        tomb[i] = szam;
        }
    return tomb;
}

public static void tombKiiras(int[] tomb) {
    for (int i = 0; i < tomb.length; i++) {
        System.out.print(tomb[i] + " ");
    }
    System.out.println();
}

public static int[] tombMetszet(int[] tomb1, int[] tomb2) {
    int[] tombMetszet = new int[tomb2.length];
    for(int i = 0; i < tomb1.length; i++){
        for(int j = 0; j < tomb2.length; j++){
            if(tomb1[i] == tomb2[j]){
                tombMetszet[i] = tomb1[i];
                }
            }
        }
    return tombMetszet;
}

public static void main(String[] args) {
    int[] tomb1 = new int[10];
    int[] tomb2 = new int[10];
    int[] tombMetszet = new int[tomb1.length + tomb2.length];

    tomb1 = tombFeltoltes();
    tomb2 = tombFeltoltes();

    tombMetszet = tombMetszet(tomb1, tomb2);

    tombKiiras(tomb1);
    tombKiiras(tomb2);
    tombKiiras(tombMetszet);
    }
}

 

Végeredmény (például):

44 89 16 61 77 1 79 42 71 100
96 41 73 26 30 79 1 62 37 86
0 0 0 0 0 1 79 0 0 0