Anfängerfrage: Woher rührt der "Rechenfehler"?
Verfasst: Mi Jul 31, 2013 9:28 am
Hallo
Da ich noch dabei bin, C zu lernen, und mich hierfür hauptsächlich ( aber nicht nur ) an dem hier zu findenden Tutorial bediene, habe ich mal eine eigene Implementierung gefertigt, welche allerdings irgendwo, zumindest für die menschenverständliche Rechenlogik der Grundschule, einen Rechenfehler begeht, und zwar einen ziemlich großen.
Basierend auf der bekannten Aussage, dass ein Jahr Hundealter 7 Menschenjahren entspricht, fragt mein Code den Benutzer nach seinem Alter und legt diese in der Variable :
ab. In der Variable JahreHund wird Jahre durch 7 geteilt.
Wenn ich die Frage nach meinem Alter mit 35 beantworte ( um eine Zahl zu haben, deren Teilung durch 7 Modulo 0 ergibt, also durch 7 teilbar ist ), wird mir allerdings gesagt, das entspräche 8 Hundejahren - also "zwischen den Zeilen" die Aussage, 35 / 7 ergäbe 8. Wenn ich richtig rechne, sind 35 durch 7 aber 5.
Hier der komplette Quellcode:
Woher die 8 in JahreHund bei Eingabe von 35 als Alter? Ich versteh's nicht ...
ProgBeginner
// EDIT // Hat sich schon erledigt - Fehler gefunden.
Hier der korrigierte ( und korrekt arbeitende ) Code :
Gezogenes Fazit: Die Variablendeklaration für JahreHund war an der falschen Stelle ....

Da ich noch dabei bin, C zu lernen, und mich hierfür hauptsächlich ( aber nicht nur ) an dem hier zu findenden Tutorial bediene, habe ich mal eine eigene Implementierung gefertigt, welche allerdings irgendwo, zumindest für die menschenverständliche Rechenlogik der Grundschule, einen Rechenfehler begeht, und zwar einen ziemlich großen.
Basierend auf der bekannten Aussage, dass ein Jahr Hundealter 7 Menschenjahren entspricht, fragt mein Code den Benutzer nach seinem Alter und legt diese in der Variable :
Code: Alles auswählen
int Jahre;
Code: Alles auswählen
int JahreHund = Jahre / 7;
Hier der komplette Quellcode:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int Jahre;
int JahreHund = Jahre / 7;
printf("Gebe bitte ein, wie alt du bist : ");
scanf("%d",&Jahre);
fflush(stdin);
printf("\nDu bist %d Jahre alt.\n",Jahre);
printf("\nDas macht %d Hundejahre\n", JahreHund);
system("PAUSE"); // Auf Tastendruck warten, erst dann beenden
return 0;
}
ProgBeginner
// EDIT // Hat sich schon erledigt - Fehler gefunden.
Hier der korrigierte ( und korrekt arbeitende ) Code :
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int Jahre;
printf("Gebe bitte ein, wie alt du bist : ");
scanf("%d",&Jahre);
fflush(stdin);
printf("\nDu bist %d Jahre alt.\n",Jahre);
int JahreHund = Jahre / 7;
printf("\nDas macht %d Hundejahre\n", JahreHund);
system("PAUSE"); // Auf Tastendruck warten, erst dann beenden
return 0;
}