Frage von Ruderkalle, 49

Kann mir jemand beim Erstellen dieses C++-Programms helfen?

Hallo Leute, ich habe nun gar keinen Plan vom Programmieren und muss für die Uni ein Programm erstellen, welches mithilfe der Funktion calcMark(int p) nach einer eingegebenen Punktzahl die Noten 1 bis 5 ausgibt. Je nachdem was erreicht wurde. Ich schicke den bisherigen Quellcode mal mit rein. Checke es nicht. Danke für die Hilfe.

Außerdem hat unser Dozent letztens mal irgendwie erklärt, wie ich das aufploppende Feld wegkriege, nachdem das Programm nicht erfolgreich kompiliert wurde und deswegen fragt, ob der letzte erfolgreiche Build erstellt werden soll. Das braucht der Editor aber nicht fragen, weil es ja Quatsch ist, dass ich ein Programm nochmal starte, womit ich gar nicht mehr arbeite. Wo geht das bei Visual Studio C++ 2010 Express? Damit arbeiten wir.

Danke für eure Hilfe!

Hier meine bisherige Arbeit:

//Notenermittler
include <iostream>
using namespace std;

int calcMark(int p) { 
 if (100<p<0){ 
   cout<<("Bitte geben sie eine Zahl zwischen 0 und 100 ein!\n")<<endl; 
   else if (0<p<45) { 
     cout<<("Note 5\n")<<endl; 
     else if (44<p<60) { 
       cout<<("Note 4\n")<<endl; 
       else if (59<p<75) { 
         cout<<("Note 3\n")<<endl; 
         else if (74<p<90) { 
	   cout<<("Note 2\n")<<endl; 
	   else if (89<p<101) { 
	     cout<<("Note 1\n")<<endl; 
           }
         } 
       } 
     } 
   } 
 }
}

int main() { 
  int p cout<<("Bitte geben sie die Punktzahl zwischen 0 und 100 ein!/n")<>p; 
  int calcMark; 
  return 0; 
}
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Fitje, 27

Hallo, zwar mit alter if(....) Bedingung, aber funzt:

//Notenermittler
#include <iostream>
using namespace std;

int calcMark(int p)
{
int note = 6;
if ((p > 100) && (p < 0)) // Besser so, sonst meckert der Compiler:
// warning: comparsions like 'X <=Y <= Z' do not have their mathematical meaning[-Wparentheses]
{
cout << "Fehler bei der Eingabe von Punktzahl" << endl;
cout << "Bitte geben sie eine Zahl zwischen 0 und 100 ein: " << endl;
}
else
{
if ((p > 0) && (p < 45)) note = 5;
if ((p > 45) && (p < 60)) note = 4;
if ((p > 59) && (p < 75)) note = 3;
if ((p > 74) && (p < 90)) note = 2;
if ((p > 89) && (p < 101)) note = 1;
}
return note;
}

int main() {
int p;
cout<<("Bitte geben sie die Punktzahl zwischen 0 und 100 ein: ");
cin >> p;
cout << "Note: " << calcMark(p) << endl;
return 0;
}

Hoffentlich lesbar!

Erstellt mit codeblocks 16.01 auf SUSE LEAP 42.2



Antwort
von regex9, 27

Hallo Leute, ich habe nun gar keinen Plan vom Programmieren (...)

Dann musst du etwas daran ändern. Deswegen bist du doch dort. Kauf dir ein gutes Buch oder leihe eines in der Uni-Bibliothek aus und beginne zu lernen.

Zu deinem Programm:

  • 100 < p < 0 - Was soll das darstellen? Einen Vergleich? So wie du kann der Computer nur 2 Werte auf einmal vergleichen. Also 100 < p && p < 0. Wobei auch das falsch ist, diese Bedingung kann nie eintreffen. 100 > p || p > 0 ist richtig, sofern der Wertebereich von 1-99 nutzbar sein soll.
  • Die Ausgabe (Bitte geben Sie ...) kommt viel zu spät, wenn man annimmt, dass in p die Eingabe bereits enthalten ist
  • Deine übrigen Vergleiche sind ebenso falsch
  • Du definierst einen Rückgabetyp (int), gibst aber keinen zurück. Dann nutze void.
  • Deine Verschachtelungen sind falsch. Einem else kann kein verschachteltes else folgen, das wäre unlogisch (wenn - dann - dann). Wenn, gibt es nur folgende Möglichkeiten der Syntax:
if(...){ // entweder if-else if-(else)

else if(...){ 

else if(...){ 


if(...){  // oder if-else { if-(else if)-(else) }

else { 
if(...) { 

else { 

}

Die Klammern bei meinen Kommentaren sollen andeuten, dass die jeweiligen Teile optional sind. Ein if benötigt nicht zwingend ein else, oder ein else-if.

Nun noch zu der main-Methode:

  • Was hast du in der ersten Zeile vor? Sie ist ein einziger großer Syntaxfehler.
  • int calcMark; ist falsch, denn der Name existiert bereits (so heißt deine definierte Funktion). Wenn du sie aufrufen möchtest, geht das so:
calcMark(p);

Dein grundsätzliches Problem ist bisher die Syntax. Die musst du wohl oder übel lernen. So wie du Vokabeln und Grammatik lernen musst, um dir eine Fremdsprache anzueignen.

Kommentar von regex9 ,

Zu deinem VS-Problem: Verneine den Dialog und behebe deine Fehler. Danach kannst du kompilieren.

Keine passende Antwort gefunden?

Fragen Sie die Community