Sponsor-Board.de

Normale Version: Problem C++
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Ich hab ein kleines Problem in meinem kleinem Programm. Er soll den Durchschnitt berechnen von einem "Kandidaten" und das bestehn und nichtbestehen ausgeben. Dabei sollten diese Kriterien erfüllt werden: es darf nicht mehr als eine Note 5 dran kommen, der Durchschnitt 1 darf nicht höher als 3,5 liegen und der Durchschnitt 2 nicht höher als 3,0 und es darf keine Sechsen geben.

Nun mein Problem ist das ich auf dem Schlau steh, weil anscheinend eine If Anweisung nicht richtig ist. Der Durchschnitt wird korrekt berechnet, aber es kommt nur immer "der Kandidat hat die Prüfung nicht bestanden", obwohl alle Kriterien erfüllt worden sind

Code:
#include <iostream>
#include <conio.h>
main()
{
      float durchschnitt, d2;
      char Kandidat[20], bestanden;
      int deutsch, englisch, physik, mathe, anz5;
      std::cout<<"\n Programm zur Ermittlung des Bestehens oder Nichtbestehens einer Prüfung\n\n";
      std::cout<<"Name des Kandidataten eingeben";std::cin>>Kandidat;
      std::cout<<"Note im Fach Deutsch eingeben";std::cin>>deutsch;
      std::cout<<"Note im Fach Mathematik eingeben";std::cin>>mathe;
      std::cout<<"Note im Fach Physik eingeben";std::cin>>physik;
      std::cout<<"Note im Fach Englisch eingeben";std::cin>>englisch;
      durchschnitt=(mathe+englisch+deutsch+physik)/4.0;
      d2=(mathe+deutsch)/2.0;
      if(deutsch==5) anz5=anz5+1;
      if(mathe==5) anz5=anz5+1;
      if(englisch==5) anz5=anz5+1;
      if(physik==5) anz5=anz5+1;
      if(deutsch==6 || mathe==6 || englisch==6 || physik==6 || anz5>1 || d2>3.0 || durchschnitt>3.5)
      bestanden='n';
      else
      bestanden='j';
      if(bestanden=='j')
      std::cout<<Kandidat<<"hat die Prufung bestanden";
      else
      std::cout<<Kandidat<<"hat die Prufung nicht bestanden";
      std::cout<<"Durchschnitt"<<durchschnitt;
      std::cout<<"Durchschnitt"<<d2;
      getch();
      }


Bitte um Hilfe für einen Anfänger. Danke im vorraus!

Lass dir mal die Variable anz5 ausgeben, dann sollte es "Klick" machen. Wink

Dein Code lässt zudem nicht gerade leicht lesen.
- Nach Abschluss eines Befehls folgt ein Zeilenumbruch
- nutze geschweifte Klammern um die Blöcke klarer darzustellen
- anz5=anz5+1; ist das gleiche wie anz++ // inkrement
- nehme Gebrauch von Namespaces

Bsp.:
#include <iostream>
using namespace std;

main() {
cout << "text" << endl; //so ersparst du es dir jedes "std::"
}
Danke hat mir geholfen, hab anz5=0; vergessen haha man man wäre ohne dich nicht drauf gekommen dickes DANKE!
Referenz-URLs