Gyakorlati alapok

Egyre növekvő téglarakás

 

Ebben a fejezetben egy tipikus tesztkérdést válaszolunk meg, amellyel egyébként valóban egy programozó akadémia tesztkérdései között találkoztam. Adott egy egyre növekvő téglarakás:

 

www.informatika-programozas.hu - Egyre növekvő téglarakások

 

A kérdés, hogy a 10. téglarakás hány téglából fog állni?

 

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

 

A válaszhoz meg kell állapítanunk a téglaszámok egyre növekvő mennyiségét szabályozó matematikai képletet.

 

Először számoljuk össze a téglákat:

 

1 - 3 - 6 - 10

 

Kis molyolással felfedezhetjük a szabályosságot, a sorozat a következő algoritmus szerint növekszik:

 

1 - (+2) - 3 - (+3)- 6 - (+4) - 10

 

Ekkor a sorozatot már tovább is bővíthetjük:

 

1 - (+2) - 3 - (+3) - 6 - (+4) - 10 - (+5) - 15 - (+6) - 21

 

A matematikai képlet meghatározása után a sorozat már alapjában véve leprogramozható. A 10. lépés és egyáltalán: a folyamatos, mindig 1-gyel növekvő léptetés sejteti, hogy az optimális léptetőmotorunk a for ciklus lesz. A kód szíve az a művelet, amely a téglák aktuális számához mindig hozzáadja a folyamatos, mindig 1-gyel növekvő léptetés értékét...

 

teglaSzam = teglaSzam + i

 

...ahol i praktikusan a for ciklus léptetője (iterátora).

 

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

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int teglaSzam = 0;
    for(int i = 1; i <= 10; i++){
        teglaSzam = teglaSzam + i;
        System.out.println("A(z) " + i + ". téglarakás " + teglaSzam + " téglából áll.");
        }
    }
}

 

Végeredmény:
A(z) 1. téglarakás 1 téglából áll.
A(z) 2. téglarakás 3 téglából áll.
A(z) 3. téglarakás 6 téglából áll.
A(z) 4. téglarakás 10 téglából áll.
A(z) 5. téglarakás 15 téglából áll.
A(z) 6. téglarakás 21 téglából áll.
A(z) 7. téglarakás 28 téglából áll.
A(z) 8. téglarakás 36 téglából áll.
A(z) 9. téglarakás 45 téglából áll.
A(z) 10. téglarakás 55 téglából áll.

 

Amint az az Aritmetikai operátorok című fejezetben tisztázásra került, a teglaSzam = teglaSzam + i művelet vígan helyettesíthető a teglaSzam += i művelettel.

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int teglaSzam = 0;
    for(int i = 1; i <= 10; i++){
        teglaSzam += i;
        System.out.println("A(z) " + i + ". téglarakás " + teglaSzam + " téglából áll.");
        }
    }
}

 

Végeredmény:
A(z) 1. téglarakás 1 téglából áll.
A(z) 2. téglarakás 3 téglából áll.
A(z) 3. téglarakás 6 téglából áll.
A(z) 4. téglarakás 10 téglából áll.
A(z) 5. téglarakás 15 téglából áll.
A(z) 6. téglarakás 21 téglából áll.
A(z) 7. téglarakás 28 téglából áll.
A(z) 8. téglarakás 36 téglából áll.
A(z) 9. téglarakás 45 téglából áll.
A(z) 10. téglarakás 55 téglából áll.

 

Egyik tanítványom a problémát egy 10 elemű tömb bevetésével oldotta meg:

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int tomb[] = new int[10] ;
    for (int i = 1; i < tomb.length; i++) {
        tomb[i] = tomb[i-1] + i;
        System.out.print(tomb[i] + " ");
        }
    }
}

 

Végeredmény:
1 3 6 10 15 21 28 36 45