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

... komplette Frage anzeigen

2 Antworten

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 bewerten Vielen Dank für Deine Bewertung

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von regex9
20.11.2016, 15:20

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

0

Was möchtest Du wissen?