C Fehler bei "Armstrong Zahlen-Programm"

  • Ersteller Ersteller Taxotic
  • Erstellt am Erstellt am
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!

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:
Bei dem Zeitpunkt wo du die Funktion armstrong aufrufst, kennt das Programm izahl noch nicht. D.h. der Aufruf sollte nach deinem scanf erst geschehen.
Sonst ist mir auf der schnelle kein Fehler aufgefallen. Hab das auch nicht getestet.

€: scheint zu klappen. Bitteschön :)
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
8
Aufrufe
1.182
Antworten
8
Aufrufe
5.255
M
  • Gesperrt
Antworten
13
Aufrufe
6.158
T
Antworten
23
Aufrufe
11.654
TerrorTeddy
T
Zurück
Oben