T
Taxotic
Gast
Moin moin,
ich bitte um Hilfe bei folgender Aufgabe:
Eine natürliche Zahl heißt Armstrong-Zahl, wenn die Summe ihrer Ziffern, jeweils potenziert
mit der Stellenanzahl der Zahl, wieder die Zahl selbst ergibt.
Beispielsweise ist 153 = 1^3+5^3+3^3 eine Armstrong-Zahl.
Die Stellenanzahl- und Potenzfunktion sollte richtig sein. Ich denke der Fehler liegt in der armstrong-Funktion!
Danke im Vorraus!
ich bitte um Hilfe bei folgender Aufgabe:
Eine natürliche Zahl heißt Armstrong-Zahl, wenn die Summe ihrer Ziffern, jeweils potenziert
mit der Stellenanzahl der Zahl, wieder die Zahl selbst ergibt.
Beispielsweise ist 153 = 1^3+5^3+3^3 eine Armstrong-Zahl.
Die Stellenanzahl- und Potenzfunktion sollte richtig sein. Ich denke der Fehler liegt in der armstrong-Funktion!
Danke im Vorraus!
Code:
#include <stdio.h>
int ziffern(int izahl)
{
int stellenanzahl=0; //Funktion zur Bestimmung der Stellennzahl
if (izahl==0)
return 0;
else stellenanzahl= 1+ziffern(izahl / 10); //Es wird solange geteilt, bis 0,xxx rauskommt, was einem Integerwert von 0 entspricht
return stellenanzahl;
}
int pow (int a, int b) //Funktion zur Potenzberechnung
{ int ergebnis=a;
while (b>1)
{ergebnis=ergebnis*a;
b--;
}
return ergebnis;
}
int armstrong(int izahl)
{
int aktuellestelle;
int erg1;
int stl=ziffern(izahl); //stl entspricht der Anzahl der Ziffern
int summe=0;
int izahlanfang=izahl;
while (izahl>0)
{
aktuellestelle=izahl%10; //Bsp: 153%10= 3
erg1=pow(aktuellestelle,stl); //Bsp: Potenzfunktion mit 3 und stellenanzahl, also 3^3
summe=summe+erg1; //Die einzelnen Potenzergebnis werden aufsummiert: 3^3+5^3+1^3
izahl=izahl/10; //Die Schleife läuft solange bis alle Stellen abgearbeitet worden sind
}
if (summe==izahlanfang)
return 1;
else
return 0;
}
int main(void)
{ int izahl;
int iarmstrong=armstrong(izahl);
printf("Bitte geben sie eine Zahl ein \n");
scanf("%i",&izahl);
printf("Die Anzahl der Ziffern lautet %i \n",ziffern(izahl));
if (iarmstrong==1)
{
printf ("Die Zahl ist eine Armstrongzahl \n");
}
else
{
printf ("Die Zahl ist KEINE Armstrongzahl \n");
}
return (0);
}
Zuletzt bearbeitet: