2016-04-02 11 views
-1

Warum ist meine andere, cout < < "Sie haben einen falschen Code eingegeben" immer noch ausgeführt und schreibe auf dem Bildschirm, nachdem ich r oder R eingeben und die Berechnung und den Dialog abschließen. Das Gleiche passiert nicht, wenn ich p oder P eintrage und den Teil meines Programms durchlasse. Entschuldigung für die unglaublich nooby Frage.Warum wird dieser Teil des Codes noch ausgeführt?

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    char service; 
    int number; 
    int minutes; 
    int dayMinutes; 
    int nightMinutes; 
    double bill; 
    double dayCharge; 
    double nightCharge; 
    double const REG_FEE = 10.00; 
    double const PREM_FEE = 25.00; 
    double const REG_MIN = 0.20; 
    double const PREM_DAY = 0.10; 
    double const PREM_NIGHT = 0.05; 

    cout << "Please enter your account number: "; 
    cin >> number; 
    cout << "Please enter your service type (regular or premium): "; 
    cin >> service; 

    if (service == 'r' || service == 'R') 
{ 
     cout << "How many minutes have been used for this service?: "; 
     cin >> minutes; 

     if (minutes <= 50) 
     { 
      bill = REG_FEE; 
      cout << fixed << showpoint << setprecision(2); 
      cout << "Your bill is $" << bill << "." << endl; 
      cout << "The account number entered was: " << number << "." << endl; 
      cout << "The service type entered was: " << service << "." << endl; 
      cout << "You used: " << minutes << " minutes." << endl; 
     } 
     else 
     { 
      bill = ((minutes - 50) * REG_MIN) + REG_FEE; 
      cout << fixed << showpoint << setprecision(2); 
      cout << "Your bill is $" << bill << "." << endl; 
      cout << "The account number entered was: " << number << "." << endl; 
      cout << "The service type entered was: " << service << "." << endl; 
      cout << "You used: " << minutes << " minutes." << endl; 
     } 

} 
    if (service == 'p' || service == 'P') 
{ 
     cout << "How many minutes were used during the day?: "; 
     cin >> dayMinutes; 
     cout << "How many minutes were used during the night?: "; 
     cin >> nightMinutes; 

     if (dayMinutes > 75) 
     { 
      dayCharge = ((dayMinutes - 75) * PREM_DAY); 
     } 
     if (nightMinutes > 100) 
     { 
      nightCharge = ((nightMinutes - 100) * PREM_NIGHT); 
     } 
      bill = dayCharge + nightCharge + PREM_FEE; 
      cout << fixed << showpoint << setprecision(2); 
      cout << "Your bill is $" << bill << "." << endl; 
      cout << "The account number entered was: " << number << "." << endl; 
      cout << "The service type entered was: " << service << "." << endl; 
      cout << "You used: " << dayMinutes + nightMinutes << " minutes." << endl; 

} 
    else 
    { 
      cout << "You have entered an invalid service code." << endl; 
      cout << "The account number entered was: " << number << "." << endl; 
      cout << "The service type entered was: " << service << "." << endl; 
    } 

    return 0; 
} 
+0

Wenn Sie 'R' oder' r' eingeben, geben Sie nicht 'p' ein und das' else' wird vom 'if (service == 'p' || service == 'P')' ausgeführt Erklärung. – Therkel

+0

@Therkel: Sie schreiben Antwort in Kommentare –

+0

Wenn Sie diesen Code in "c" ausführen, wird es fehlschlagen. – Joel

Antwort

1

Das ist, weil Sie this-

if (service == 'r' || service == 'R'){ 
    // your code 
} 
else if(service == 'p' || service == 'P'){ 
    //your code 
} 
else { 
    //your code 
} 

Problem jetzt mit Ihrem Code benötigen, ist, dass selbst wenn Sie 'r' oder 'R' aufgrund if else Zustand eintreten mit 'p' oder 'P' wird false und else Teil bekommt hingerichtet .

Deshalb mussten Sie if - else if Format verwenden, so dass für eine Eingabe nur ein Teil ausgeführt wird.

Verwandte Themen