Anzahl der Stellen ausrechnen (Programmiersprache C)
Ich lerne derzeit die Programmiersprache C, um dann im nächsten Schritt auf die Programmiersprache C++ umzusatteln. Doch zuerst möchte ich ein wenig Erfahrung in der Programmierung sammeln. Schließlich ist noch kein Meister vom Himmel gefallen
Derzeit programmiere ich ein kleines Programm, dass mir die Anzahl der Stellen in einer eingegebenen Zahl ausgibt. Doch leider ergibt sich dabei ein kleines Problem: Sobald ich höherwertige Zahlen eingebe, funktioniert das Programm nicht mehr wie gewünscht. Mit höherwertig meine ich Zahlen mit mehr als neun Ziffern. Vielleicht kann ja jemand von euch mal über meinen Programmcode schauen und mir dann anschließend sagen, was ich falsch gemacht habe?
- Code: Alles auswählen
int main()
{
int nummer, stelle=1,a;
printf("Zahl eingeben:");
scanf("%d",&zahl);
a=nummer;
while((a=a/10)!=0)
stelle=stelle+1;
printf("%d",stelle);
return(0);
}
Wahrscheinlich passiert das dann, wenn du den Zahlenbereich deiner Integerzahl überschreitest. Integer ist auf PCs in der Regel eine 32-Bit-Zahl; da du eine vorzeichenbehaftete Darstellung gewählt hast, kannst du maximal eine Zahl bis etwas über 2 Milliarden (2 hoch 31 eben) eingeben.
Um höhere Zahlen einzugeben, musst du ein anderes Zahlenformat wählen. Wenn du auf Integer bleiben willst, kannst zu z.B. long long int (die zwei long sind Absicht) verwenden. Du kannst aber auch eine Flieskommadarstellung verwenden - die zugehörigen Zahlenformate wären dann float oder besser double.
Geht es darum, später noch mit der Zahl zu arbeiten oder willst du wirklich nur die Stellenanzahl ausgeben können? Wenn du noch mit der Zahl arbeiten willst wird das Ganze etwas umständlich, wenn du nur die (ganzzahligen?) Stellen erfahren willst kannst du einen Weg gehen, der nur die eingegebene Zeichenkette verarbeitet, ich gehe dabei von einer Konsolenanwendung aus:
Nachdem du die Zahl eingegeben hast drückst du Enter, dann wird eine Struktur aufgerufen, die eine Variable mit jedem eingelesenen Zeichen um eins hochzählt und stoppt, sobald das "\r" des Enter erscheint.
#include <stdio.h>
int main()
{
int i = -1;
char c = 'A';
printf("Geben Sie eine Zahl ein.\n");
while(c != '\n')
{
scanf("%c", &c);
i++;
}
printf("Ihre Zahl hat %d Stellen.", i);
scanf("%c", &c);
}
Ich habe es getestet, so klappt das bei mir, zumindest für Ganzzahlen. Für Kommazahlen oder zur mehrmaligen Verwendung des Programms bei nur einem Start müsste man natürlich noch einige Anpassungen vornehmen, aber das überlasse ich dir
Das Problem sollte wie von Weasel_ beschrieben darin liegen, dass Du hier int verwendest. Dabei spielt signed oder unsigned keine Rolle, weil es in einem Fall von -2'147'483'648 bis 2'147'483'647 (signed) und im anderen Fall von 0 bis 4'294'967'295 (unsigned) geht. In beiden Fällen jeweils maximal 10 Stellen.
Empfehlen kann man dann, wenn es ein bisschen mehr sein darf, wie eben auch von Weasel_ geschrieben, den Datentypen double. Dann geht es, deutlich mehr Stellen anzugeben (15). Doch auch hier wäre mal ein Ende erreicht.
Geht es tatsächlich gar nicht um Zahlen selbst, so kann man sich eben wirklich überlegen, statt numerischer Datentypen einen String zusammen zu bauen und einfach dessen Zeichen zu zählen.
Link dieser Seite https://www.talkteria.de/forum/topic-147405.html
Ähnliche Themen
Weitere interessante Themen
- Schöne Blatt Pflanze für die Wohnung 1026mal aufgerufen · 1 Antworten · Autor: Rubbelfeld · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Schöne Blatt Pflanze für die Wohnung
- Palmen für die Wohnung 2986mal aufgerufen · 1 Antworten · Autor: Dreddi · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Palmen für die Wohnung
- Was kann man gegen eine tropfende Birkenfeige tun? 1839mal aufgerufen · 1 Antworten · Autor: helgak62 · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Was kann man gegen eine tropfende Birkenfeige tun?
- Verträgt Banane chemisches Anti Insekten Mittel? 1335mal aufgerufen · 1 Antworten · Autor: Wawa666 · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Verträgt Banane chemisches Anti Insekten Mittel?