Gyakorlati alapok

Négyzetszámok listázása bekéretődzött felső határig


Ebben a fejezetben a megoldandó probléma a következő: listázzuk ki a négyzetszámokat egy, a felhasználótól bekért felső határig! A kiírási sorrend nem számít. A listát érthetően, jól olvashatóan formázzuk meg!

Ha listáznunk kell, akkor a motor legtöbbször egy for ciklus, jól beállított feltételekkel.

 

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

 

Ugyanakkor négyzetszámoknak nevezzük az olyan eredményt, amely 2 azonos szám összeszorzásával keletkezik. A szabványos matematikai megfogalmazás mint mindig, most is rémes, de ha azt mondjuk, hogy hatványozás, akkor már minden bizonnyal közérthetőbb. Például 4 x 4 = 42 = 16 műveletben a négyzetszám a 16.


A négyzetszámokat csakis a bekért felső határig (int border) kell listáznunk és ha alaposak kívánunk lenni, akkor nemcsak azokat, hanem az alapszámokat (int base) és a műveletet is megjeleníthetjük. A trükk az, hogy a listát a bekért felső határ négyzetgyökétől kell futtatnunk (int base = (int)Math.sqrt(border)) és mivel a kiírási sorrend nem számít, lehetséges visszafelé is. Ez egy visszafelé araszoló for ciklust eredményez, amely csoszogás base = i értéktől kezdődik és 1 értékig tart.

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

 

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

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Kerem, hogy adja meg a felso hatart!");
    int border = scanner.nextInt();
    int base = (int)Math.sqrt(border);

    System.out.println();
    for(int i = base; i > 0; i--) {
        int result = i * i;
        System.out.println(result + ", mert " + result + " = " + i + " * " + i);
        }
    }
}
 

Végeredmény:

Kerem, hogy adja meg a felso hatart!
500


484, mert 484 = 22 * 22
441, mert 441 = 21 * 21
400, mert 400 = 20 * 20
361, mert 361 = 19 * 19
324, mert 324 = 18 * 18
289, mert 289 = 17 * 17
256, mert 256 = 16 * 16
225, mert 225 = 15 * 15
196, mert 196 = 14 * 14
169, mert 169 = 13 * 13
144, mert 144 = 12 * 12
121, mert 121 = 11 * 11
100, mert 100 = 10 * 10
81, mert 81 = 9 * 9
64, mert 64 = 8 * 8
49, mert 49 = 7 * 7
36, mert 36 = 6 * 6
25, mert 25 = 5 * 5
16, mert 16 = 4 * 4
9, mert 9 = 3 * 3
4, mert 4 = 2 * 2
1, mert 1 = 1 * 1