Fehler gesucht



  • Hallo zusammen!

    Hier erstmal, was das kleine Programm bewerkstelligen soll:
    Schreibe ein Programm, welches die 9-stelligen Zahlen ausgibt, für die gilt:
    Die "Teilzahlen" müssen durch die Ziffernanzahl teilbar sein
    Bsp.: Wäre es die Zahl 123456789, so müsste 1/1,
    12/2,
    123/3 ...

    Dürfte klar sein oder?
    Mein Versuch war folgender:

    #include<iostream>
    
    using namespace std;
    
    int stelle(int nummer, unsigned long zahl) {
        zahl*=10;
        if (nummer!=9) {
            for (long i; i <= 9; i++) {
                if ((zahl+i)%nummer == 0)
                    stelle(nummer+1,zahl+i);
            }
        }
        else {
            for (long i=1; i<= 9; i++) {
                if ((zahl+i)%9==0) 
                    cout << zahl+i << endl;
            }
        }
        return 0;
    }
    
    int main() {
        for (long i=1; i <= 9; i++)
            stelle(2,i);
    
    }
    

    Es wird jedoch nichts ausgegeben, und ich finde den Fehler nicht 😞



  • Original erstellt von r3i_weN:
    **Hier erstmal, was das kleine Programm bewerkstelligen soll:
    Schreibe ein Programm, welches die 9-stelligen Zahlen ausgibt, für die gilt:
    Die "Teilzahlen" müssen durch die Ziffernanzahl teilbar sein
    Bsp.: Wäre es die Zahl 123456789, so müsste 1/1,
    12/2,
    123/3 ...

    Dürfte klar sein oder?**

    nein 😕 angenommen die Zahl sei 182345731, muss dann gelten
    1/1
    18/8
    182/2
    ...
    182345731/1 ist ganzzahlig?



  • So nun funktionierts 😉 Du hast vergessen den return befehl am ende einzusetzen. Aber deine rechnung fängt mit 9 an das weisst du oder? Ausserdem läuft das bei mir so schnell das ich ein Drehwurm bekomm 🙂 Hier der Code

    #include<iostream>
    
    using namespace std;
    
    int stelle(int nummer, unsigned long zahl) {
        zahl*=10;
        if (nummer!=9) {
            for (long i; i <= 9; i++) {
                if ((zahl+i)%nummer == 0)
                    stelle(nummer+1,zahl+i);
            }
        }
        else {
            for (long i=1; i<= 9; i++) {
                if ((zahl+i)%9==0) 
                    cout << zahl+i << endl;
            }
        }
        return 0;
    }
    
    int main() {
        for (long i=1; i <= 9; i++)
            stelle(2,i);
    return 0;
    }
    

    Landser


Anmelden zum Antworten