Wie programmiere ich einen Zähler in C?
Hallo,
ich bin ein Anfänger und würde gerne wissen wie man einen Zähler programmiert, welcher bei 0 anfängt und bis zur Zahl zählt, die der Benutzer eingegeben hat. Das ganze soll mit einer do-while Schleife sein. Ich bitte um den ganzen Code. Ich kriege es einfach nicht hin.
5 Antworten
also ich würde es so lösen:
#include <stdio.h>
int main(){
int Zahl, a;
printf("Eingabe:");
scanf("%d", Zahl);
do{
a = a + 1;
printf("Ihre Zahl ist größer als: %d", a);
}while(a != Zahl);
printf("Ihre Zahl ist: %d", a);
}
Ich habe den Code aber nicht überprüft, bei Fehlern oder Verständnisproblemen, melde dich einfach :)
LG
Ist mir 2 Minuten später auch aufgefallen, aber ich bin mal davon ausgegangen, dass es hier einfach nicht nötig ist, weil der Benutzer ja weiß, was er eingeben muss.
Also ... Variablen IMMER initialisieren
Das ist eine sehr gute Idee, danke dafür, wird mir die Fehlersuch in Zikunft bestimmt erleichtern!
Hey,
Vielen Dank aber ich kriege die Meldung, dass es kann leider nicht ausgeführt werden kann. Der Fehler ist, dass die nicht initialisierten Variablen Zahl und a verwendet wurden.
Ich hätte da eine Frage. Warum hast du bei printf("Ihre Zahl ist größer als:.... angegeben? Ich will dass man beim Programm eine Zahl eintippen kann. Und dann soll von 0 auf die eingegebene Zahl hochgezählt werden. Und solange die Zahl nicht erreicht wurde soll die Schleife wiederholt werden.
Tut mir leid falls du den Code bereits so gemacht hast.
LG
Das Programm macht alles so, wie es soll, aber ich habe noch einen Counter hinzugefügt um die Übersicht zu behalten und weil die Schleife sonst sehr unnötig wäre.
So etwas ist generell besser mit einer for Schleife zu regeln:
int a, Zahl;
printf("Zahl:");
scanf("%d", Zahl);
for(a = 0; a < Zahl;a++)
printf("was auch immer in der Schleife passieren soll, hier geht es. Ich counte, wie oft die Schleife bereits durchlaufen ist\nNummer:%d", a + 1);
printf("fertig");
man sollte aus schönheitsgründen natürlich jeweils nach dem Ausgaben von a einen Zeilenumbruch machen
Nein.
int main()
{
int zahl;
int i = 0;
printf( “Bis zur welche Zahl soll ich zaehlen?“);
scanf_s(“%d“, & zahl);
do {
i = i + 1;
} while (i <=zahl);
printf(“zahl %d\n“, zahl);
}
zähler initialisieren;
do{
zähler inkrementieren;
}while(zähler < grenzwert);
Das Ganze bildest Du nun auf die C Sntax ab.
#include <iostream>
int main()
{
int zahl;
int i = 0;
printf( “Bis zur welche Zahl soll ich zaehlen?“);
do {
i = i + 1;
scanf_s(“%d“, & zahl);
} while (i = 0 <=zahl);
printf(“zahl %d\n“, zahl);
}
so?
Nö, und was willst mit iostream bei C?
Du willst die Zahl (Grenze) natürlich VOR der Schleife einlesen.
Hier mal ein sehr ähnliches Beispiel:
int alter;
do {
printf("\nBitte geben sie ihr Alter ein: ");
scanf("%d", &alter);
} while(alter < 5 || alter > 100);
printf("Danke.\n");
Wie weit ist dein Programm bereits ? Welche Entwicklungsumgebung verwendest du ?
ich arbeite mit visual studios.
#include <iostream>
int main()
{
int zahl;
int i;
do {
printf( “Bis zur welche Zahl soll ich zaehlen?“);
scanf_s(“%d“, & zahl);
} while (i = 0 <=zahl);
printf(“zahl %d\n“, zahl);
}
Dein
printf( “Bis zur welche Zahl soll ich zaehlen?“);
solltest du vor die Schleife setzen, sonst muss du dies immer wieder eingeben und somit kommt das Ding nicht zum Ende. UND du musst noch die Zeile
i = i + 1 in der Schleife platzieren, damit irgendwann die Abbruchbedinung erfüllt sein kann. ..und ..
int i=0;
do{
} while (i <=zahl);
#include <iostream>
int main()
{
int zahl;
int i = 0;
printf( “Bis zur welche Zahl soll ich zaehlen?“);
do {
i = i + 1;
scanf_s(“%d“, & zahl);
} while (i = 0 <=zahl);
printf(“zahl %d\n“, zahl);
}
so?
Das ist leider fehlerhaft. Stell dir mal vor, jemand gibt "0" ein.
Außerdem sollte man Variablen IMMER initialisieren, um Sicherheitslücken vorzubeugen.
Wenn ich bei deinem Code z. B. ein "a" eingebe, schlägt scanf() fehl,, was du mangels Fehlerbehandlung aber nicht mitbekommt, wodurch die Variable "Zahl" weiterhin uninitialisiert ist, und einen zufälligen Wert haben kann.
Die Folge ist eine Schleife, die durchaus einige Milliarden mal printf() aufruft, bevor sie abbricht.
Bei Servercode ist so etwas verheerend, und ermöglicht DoS Attacken.
Also ... Variablen IMMER initialisieren (im obigen Falle mit "0") und IMMER auf Fehler beim Aufruf ALLER Funktionen prüfen.
Und zum Testen IMMER erst Grenzfälle prüfen! Dann kann auch nichts mehr schief gehen. :)