2016-10-19 19 views
0

Also habe ich diese Übung, ich muss den Benutzer für 2 Eingaben fragen (Noten> 0 < 10) und dann muss ich den Durchschnitt drucken und dann den Benutzer fragen, ob sie mehr Noten 1 einfügen möchten -ja 2-nein; Wenn es 1 ist, wird das Programm erneut ausgeführt, wenn es 2 ist, wird das Programm beendet. Aber ich habe Probleme, das Programm zu beenden.Main nicht zurück 0

// ConsoleApplication7.cpp : Defines the entry point for the console application. 
// 
#include <iostream> 
#include "stdafx.h" 

int main() 
{ 
    using namespace std; 
    float n1; 
    float n2; 
    cin >> n1; 
    cin >> n2; 
    if ((n1 || n2) > 10) { 
     cout << "Wrong grade"; 
    } 
    else if ((n1 || n2) < 0) { 
     cout << "Wrong grade"; 
    } 
    else { 
     cout << "The grade average is " << (n1 + n2)/2 << endl; 
     cout << "Do you want to insert more grades ? " << endl; 
     int g; 
     cin >> g; 
     if (g = 1) { 
      main(); 
     } 
     else if (g = 2) { 
      return 0; 
     } 
    } 
    return 0; 
}  
+2

Verwenden Sie eine "while" -Schleife, anstatt 'main()' erneut aufzurufen. –

+2

Tippfehler. "g = 1" und "g = 2". Sie müssen "g == 1" und "g == 2" sein. –

+3

Es ist undefiniert, 'main' in C++ aufzurufen. Dein Programm ist ungültig. Benutze eine Schleife. – molbdnilo

Antwort

5

Das Problem ist für die Gleichstellung Sie = müssen zwei testen, nicht ein so Ihre zwei Kontrollen tatsächlich Werte zuweisen g nicht mit g Vergleich

if (g == 1) { 
     main(); 
    } 
    else if (g == 2) { 
     return 0; 
    } 

Jeder moderne Compiler Sie einen Compiler gegeben haben sollte Warnung diese Aufgabe. Sie sollten immer versuchen, auf Compiler-Warnungen zu achten.

Auch Ihre Logik

if ((n1 || n2) > 10) 

und

else if ((n1 || n2) < 0) 

ist falsch, aber ich werde es Ihnen überlassen, herauszufinden, was falsch ist (diese Hausaufgaben ist afterall).

Zuletzt möchten Sie vielleicht sehen, eine do-while Schleife statt main() immer und immer wieder zu tun.

+0

Upvoted für das Setzen der Konstante zuerst. – Gwen

+1

Downvoted aus dem gleichen Grund - das macht mehr schaden als hilft – Slava

+0

@Slava wirklich? Bitte geben Sie mir ein Beispiel, wo es Schaden anrichtet, weil mir nichts einfällt. –

1

Ihre if Zustand ist falsch:

if (g = 1) 

Sets g-1 und ist immer wahr. Was Sie tun möchten, ist:

if (g == 1) 

Und wie Scott in seinem Kommentar sagte, sollten Sie nicht Haupt nennen, sondern eine while Schleife verwenden.

0

Bitte beachten Sie diese Änderungen.

float n1; 
float n2; 
int g = 1; 
while (g != 2) 
{ 
    cout << "Please enter two grades: " << endl; 
    cin >> n1; 
    cin >> n2; 
    if ((n1 || n2) > 10) { 
     cout << "Wrong grade"; 
    } 
    else if ((n1 || n2) < 0) { 
     cout << "Wrong grade"; 
    } 
    else { 
     cout << "The grade average is " << (n1 + n2)/2 << endl; 
     cout << "Do you want to insert more grades ? " << endl; 
     cin >> g; 
    } 
} 
return 0; 

}

Beachten Sie auch, dass ich außerhalb der Haupt mit Namespace verschoben.