Gyakorlati alapok

Egyjegyűség, kétjegyűség, háromjegyűség megszámlálása


Ebben a rövid fejezetben a számok „számjegyűségét” számoljuk meg, tehát azt a mennyiséget, hogy az Univerzumban hány darab egyjegyű, kétjegyű, háromjegyű, stb. egész szám létezik.

 

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

 

Ennek során a számok 10-zel való oszthatóságát rántjuk ki a varázskalapból, hiszen ez a tulajdonság egyértelműen meghatározza a keresett értékeket:

Gyakorlásképpen először érdemes a számításokat jegyenként szétbontani. Illetve van itt 1 másik probléma is, amely vita formájában pattant ki egyik ismerősömmel. Úgy érvelt, hogy vizsgálatkor tökéletesen elég a keresett számokat kilistáznunk és megszámolnunk. Ekkor egy for ciklust bevetve egyszerűen felsoroljuk, kilistázzuk a számokat. Egyjegyűek esetében például: 

 

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

 

 

 

 

 

 

 


public class Main {
public static void main(String[] args){
    int szamlalo = 0;
    for(int i = 1; i < 10; i++){
        System.out.println(i);
        szamlalo++;
        }
    System.out.println("\nEgyjegyűek száma: " + szamlalo);
    }
}

 

Végeredmény:

1
2
3
4
5
6
7
8
9

 

Egyjegyűek száma: 9

 

Igaz, ennél egyszerűbb semmi sem lehet, ám ekkor nincs feltétel, nincs szűrés. Szerintem 1 fokkal előnyösebb, ha sok szám közül a megfelelő feltétel beállításával szűrjük ki a keresett értékeket. Az alábbi futtatható Java-kódban alapjában véve 200-ig rohan a for ciklus, de a szűrés csak az egyjegyű számokat és mennyiségét állapítja meg:

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int szamlalo = 0;
    for(int i = 1; i <= 200; i++){
        double hanyados = i / 10;
        if(hanyados < 1){
            szamlalo++;
            System.out.println(i);
            }
        }
    System.out.println("\nEgyjegyűek száma: " + szamlalo);
    }
}

 

Végeredmény:

1
2
3
4
5
6
7
8
9

 

Egyjegyűek száma: 9

 

Kétjegyűek esetében pedig:

 

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

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int szamlalo = 0;
    for(int i = 1; i <= 200; i++){
        double hanyados = i / 10;
        if(hanyados >= 1 && hanyados < 10){
            szamlalo++;
            System.out.println("Kétjegyú szám: " + i);
        }
    }
    System.out.println("\nKétjegyűek száma: " + szamlalo);
    }
}

 

Végeredmény:

Kétjegyú szám: 10
Kétjegyú szám: 11
Kétjegyú szám: 12
Kétjegyú szám: 13
Kétjegyú szám: 14
Kétjegyú szám: 15
Kétjegyú szám: 16
Kétjegyú szám: 17
Kétjegyú szám: 18
Kétjegyú szám: 19
Kétjegyú szám: 20
Kétjegyú szám: 21
Kétjegyú szám: 22
Kétjegyú szám: 23
Kétjegyú szám: 24
Kétjegyú szám: 25
Kétjegyú szám: 26
Kétjegyú szám: 27
Kétjegyú szám: 28
Kétjegyú szám: 29
Kétjegyú szám: 30
Kétjegyú szám: 31
Kétjegyú szám: 32
Kétjegyú szám: 33
Kétjegyú szám: 34
Kétjegyú szám: 35
Kétjegyú szám: 36
Kétjegyú szám: 37
Kétjegyú szám: 38
Kétjegyú szám: 39
Kétjegyú szám: 40
Kétjegyú szám: 41
Kétjegyú szám: 42
Kétjegyú szám: 43
Kétjegyú szám: 44
Kétjegyú szám: 45
Kétjegyú szám: 46
Kétjegyú szám: 47
Kétjegyú szám: 48
Kétjegyú szám: 49
Kétjegyú szám: 50
Kétjegyú szám: 51
Kétjegyú szám: 52
Kétjegyú szám: 53
Kétjegyú szám: 54
Kétjegyú szám: 55
Kétjegyú szám: 56
Kétjegyú szám: 57
Kétjegyú szám: 58
Kétjegyú szám: 59
Kétjegyú szám: 60
Kétjegyú szám: 61
Kétjegyú szám: 62
Kétjegyú szám: 63
Kétjegyú szám: 64
Kétjegyú szám: 65
Kétjegyú szám: 66
Kétjegyú szám: 67
Kétjegyú szám: 68
Kétjegyú szám: 69
Kétjegyú szám: 70
Kétjegyú szám: 71
Kétjegyú szám: 72
Kétjegyú szám: 73
Kétjegyú szám: 74
Kétjegyú szám: 75
Kétjegyú szám: 76
Kétjegyú szám: 77
Kétjegyú szám: 78
Kétjegyú szám: 79
Kétjegyú szám: 80
Kétjegyú szám: 81
Kétjegyú szám: 82
Kétjegyú szám: 83
Kétjegyú szám: 84
Kétjegyú szám: 85
Kétjegyú szám: 86
Kétjegyú szám: 87
Kétjegyú szám: 88
Kétjegyú szám: 89
Kétjegyú szám: 90
Kétjegyú szám: 91
Kétjegyú szám: 92
Kétjegyú szám: 93
Kétjegyú szám: 94
Kétjegyú szám: 95
Kétjegyú szám: 96
Kétjegyú szám: 97
Kétjegyú szám: 98
Kétjegyú szám: 99

Kétjegyűek száma: 90

 

Nézzük azt a futtatható Java-kódot is, amely szintén feltételszűréssel (a for ciklus 10000-ig fut) megszámlálja az egy-, két-, és háromjegyű számokat:

 

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

 

 

 

 

 

 

 


public class Main {
public static void main(String[] args){
    int egyJegyuSzam = 0;
    int ketJegyuSzam = 0;
    int haromJegyuSzam = 0;
    for(double i = 1; i < 10000; i++){
        if(i / 10 < 1){
            egyJegyuSzam++;
        }
        else if((i / 10 >= 1) && (i / 10 < 10)){
            ketJegyuSzam++;
        }
        else if((i / 10 >= 10) && (i / 10 < 100)){
            haromJegyuSzam++;
        }
    }
    System.out.println("Egyjegyűek száma: " + egyJegyuSzam);
    System.out.println("Kétjegyűek száma: " + ketJegyuSzam);
    System.out.println("Háromjegyűek száma: " + haromJegyuSzam);
    }
}

 

Végeredmény:

Egyjegyűek száma: 9
Kétjegyűek száma: 90
Háromjegyűek száma: 900

 

A későbbiek során egyik tanítványom meglehetősen egyszerűen oldotta meg a problémát. Nem vacakolt az oszthatósággal, helyette egyenesen az értéktartományokat vizsgálta meg. Valójában így is jó, mert a feladat megoldásra került:

 

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

 

 

 

 

 

 

 


public class Main {
public static void main(String[] args) {
    int egyjegyu = 0;
    int ketjegyu = 0;
    int haromjegyu = 0;
    int negyjegyu = 0;
    for (int i = 1; i <= 1000; i++) {
        if(i < 10) egyjegyu++;
        if(i > 9 && i<= 99) ketjegyu++;
        if(i > 99 && i <= 999) haromjegyu++;
        if(i > 999) negyjegyu++;
    }
    System.out.print("0-tól 1000-ig ennyi egyjegyú szám van: " + egyjegyu + ", ennyi kétjegyű: " + ketjegyu);
    System.out.print(", ennyi háromjegyű: " + haromjegyu + ", ennyi négyjegyű: " + negyjegyu);
    }
}

 

Végeredmény:

0-tól 1000-ig ennyi egyjegyú szám van: 9, ennyi kétjegyű: 90, ennyi háromjegyű: 900, ennyi négyjegyű: 1