do-while schleife fehler

Status
Für weitere Antworten geschlossen.

Physically

Lt. Commander
Registriert
Nov. 2010
Beiträge
1.708
Hey Leute,

ich soll als hausaufgabe ein programm schreiben, dass 6 eingeben verlangt (noten). nach der 6ten eingabe soll dann der durschnitt berechnet werden. so far so good!

hier der code:


das problem liegt bei der do-while schleife, denn ich muss nur einemal eine note eingeben und dann rechnet er sofort das ergebnis aus...icch möchte aber 6 noten eingeben. ich habe doch am ende "while(zaehler == 6);" eingeben?



Code:
#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{

//Deklaration

int note, zaehler;
float durchschnitt;

//Initialisierung

note = 0;
zaehler = 0;
durchschnitt = 0;

//Eingabe

printf("Bitte geben Sie sechs Noten ein, deren Durschnitt\n");
printf("berechnet werden soll:\n\n");

do{

printf("Note:\n");
scanf("%i", &note);
durchschnitt = note + durchschnitt;
zaehler = zaehler + 1;
}while(zaehler == 6);


//Verarbeitung

durchschnitt = durchschnitt / 6;

//Ausgabe

printf("Dies ist der Durchschnitt %0.2f", durchschnitt);

    return 0;
}


Vielen Dank.


Schroeerg
 
Du solltest dich mal schlau machen, wie Schleifen funktionieren.
Es ist eigentlich klar, warum er abbricht.

Da dies eine Hausaufgabe ist, hab ich auch keine Lust, weiterzuhelfen.
 
Da die Lösung sowieso schon genannt wurde:
Die Schleife soll ausgeführt werden bis der Zähler 6 erreicht.

Nun gibt es zwei Möglichkeiten:
while < 6 bzw. while <=6 --> Funktioniert selbst wenn plötzlich eine Kommazahl in der Variable stehen würde
Eine Alternative wäre (aber eher unschön): while != 6 bzw. while <> 6 --> Schleife bricht ab, sobald genau 6 in der Variable steht.
Das mag funktionieren wenn du immer 1 dazuzählst, aber sobald du mal andere Zählschritte einführst kann es zu Problemen kommen.
 
naja aber zaehler ist asl int deklariert und er zählt es ja selbstsändig hoch.
Am sinnvollsten ist für soetwas natürlich eine for schleife, da sieht man sofort alles (bedingung, inkrement und start), while schleifen nutze ich lieber für andere abfragen.

<= 6 würde allerdings nur bei einer kopfgesteuerten schleifen funktionieren, diese ist aber nachprüfend und der counter startet bei 0.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben