Gyakorlati alapok
2 tömb metszete külön függvényekkel
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...
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.
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:
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