Iloczyn kartezjański

/* IloczynKartezjanski.java

I = {1,2}
J = {2,3,4}

I x J = {(1,2), (1,3), (1,4), (2,2), (2,3), (2,4)}

Program wyznacza iloczyn kartezjański zbiorów I x J.

I x J = {(i,j) : i ∈ I ∧ j ∈ J}

Iloczyny kartezjańskie wyznaczamy przy pomocy pętli zagnieżdżonych.

Nagłówki pętli zagnieżdżonych określamy w taki sposób, aby wejścia do ciała 
pętli zewnętrznej następowały z wartościami ze zbioru I, a wejścia do ciała 
pętli wewnętrznej następowały z wartościami ze zbioru J.

Zatem:

Do ciała pętli zewnętrznej wchodzimy z wartościami zmiennej sterującej i od 1 do 2.
Do ciała pętli wewnętrznej wchodzimy z wartościami zmiennej sterującej j od 2 do 4.

Innymi słowy:

I to zbiór wartości zmiennej sterującej i, dla których wchodzimy do ciała pętli zewnętrznej.
J to zbiór wartości zmiennej sterującej j, dla których wchodzimy do ciała pętli wewnętrznej.
*/

public class IloczynKartezjanski
{
  public static void main(String[] args)
  {
    System.out.println("I = {1,2}");
    System.out.println("J = {2,3,4}");
    
    System.out.println();
    
    System.out.print("I x J = {");
    
    for (int i = 1; i <= 2; i++)
    {
      for (int j = 2; j <= 4; j++)
      {
        System.out.print("(" + i + "," + j + ")");
        
        if (i < 2 || j < 4) System.out.print(", ");
      }
    }
    
    System.out.println("}");
  }
}
I = {1,2}
J = {2,3,4}

I x J = {(1,2), (1,3), (1,4), (2,2), (2,3), (2,4)}
Press any key to continue...

Zadanie Dokonaj analizy programu IloczynKartezjanski.

"I = {1,2}"
"J = {2,3,4}"

""

'I x J = {'

i = 1
1 <= 2   j = 2   
         2 <= 4   '(1,2)'   1 < 2 || 2 < 4   ','   j = 3
         3 <= 4   '(1,3)'   1 < 2 || 3 < 4   ','   j = 4
         4 <= 4   '(1,4)'   1 < 2 || 4 < 4   ','   j = 5
         5 <= 4   false
i = 2
2 <= 2   j = 2
         2 <= 4   '(2,2)'   2 < 2 || 2 < 4   ','   j = 3
         3 <= 4   '(2,3)'   2 < 2 || 3 < 4   ','   j = 4
         4 <= 4   '(2,4)'   2 < 2 || 4 < 4  false  j = 5
         5 <= 4   false
i = 3
3 <= 2   false

"}"

Strona główna