Einlesen von Zahlen in C < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | Ein Programm, welches Zahlen einliest und aufaddiert. Sobald statt einer Zahl „=“ eingegeben wird, soll die Summe
ausgegeben werden. |
Hallo!
Hab mit einer anscheinend einfachen Anfänger-Aufgabe ein sehr lästiges Problem.
Ich soll ein Programm schreiben das Zahlen solange einliest bis das "=" Zeichen gegeben wird.
Hab es jetzt bereits vergeblich mit folgendem Code versucht.
int main()
{
int zahl=0, ergebnis=0;
do {
printf("Bitte gib eine Zahl ein \ n");
scanf("%d", &zahl);
ergebnis += zahl;
printf("Zwischenergebnis: %d \ n", ergebnis);
}
while (zahl != '=');
printf("Endergebnis");
}
Wenn ich '=' gegen ein Zahl austausche funktioniert es super - bis auf das das die Zahl noch addiert wird :)
nur leider nützt mir das nichts :(
Danke für euer Antworten im Voraus
LG
|
|
|
|
Hallo,
ich zitiere jetzt mal gar nicht: du bist da auf dem völlig falschen Dampfer mit deinem Ansatz. Deine Variable zahl ist vom Typ int, also ein 16-bit-Integer. Das Gleichheitszeichen jedoch ist keine Zahl, kann also von einer Variablen vom Typ int nicht aufgenommen werden.
Du könntest eine Variable vom Typ char definieren, um die Eingabe aufzunehmen. Diese wandelst du dann um, so lange eben Zahlen eingegeben werden. Dazu soltest du dir vielleicht noch die Nummern der Ziffern von 0-9 im ASCI-Code irgendwoher besorgen, um prüfen zu können, ob eine Zahl eingegeben wurde.
Gruß, Diophant
|
|
|
|
|
Vielen Dank für deine Antwort.
So etwas hab ich schon befürchtet.
Allerdings wenn ich mit einer char Variable eine Typumwandlung durchführe, kommt dann doch eine andere Zahl heraus. Also zu Beispiel wenn ich die char Variable nehme und daraus einen int oder float mache?
LG
|
|
|
|
|
Hallo,
> Vielen Dank für deine Antwort.
>
> So etwas hab ich schon befürchtet.
>
> Allerdings wenn ich mit einer char Variable eine
> Typumwandlung durchführe, kommt dann doch eine andere Zahl
> heraus. Also zu Beispiel wenn ich die char Variable nehme
> und daraus einen int oder float mache?
Richtig. Darauf habe ich ja hingewiesen. Die char-Variable enthält die Nummer aus dem ANSI- bzw. ASCII Code (hier das gleiche). In dieser Tabelle gehen die Ziffern von 0x30 (0) bis 0x39 (9). Das entspricht den dezimalen Werten 48 bis 57. Das musst du dann nach der Umwandlung noch entsprechend umrechnen.
Eine ANSI-Tabelle vorliegen zu haben ist Pflicht beim Programmieren, auch heute noch!
Gruß, Diophant
|
|
|
|