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