2016-09-08 5 views
-3

Ich bin ein Neuling Student unter CSE 100 jede Hilfe dieses Thema zu verstehen ist zu schätzen. Es war in Ordnung, aber wenn es ausgeführt wurde, wurde Benutzer nur einmal aufgefordert, nach mehreren Änderungen der Lehrer schlug jetzt das Programm nicht kompilieren. Es gibt mir folgende Fehler.Compiler gibt mir einen Fehler: keine Übereinstimmung für 'Operator *'

main.cpp|30|error: no match for 'operator*' (operand types are 'const double' and 'std::string {aka std::basic_string<char>}')| 

main.cpp|33|error: no match for 'operator*' (operand types are 'const double' and 'std::string {aka std::basic_string<char>}')| 

main.cpp|36|error: no match for 'operator+' (operand types are 'std::string {aka std::basic_string<char>}' and 'double')| 

Versuchte Code:

#include <iostream> 

using namespace std; 

int main() 
{ 
    const double adultTicket = 9.50; //declared const double with value of 
    //$9.50price per adult ticket. 
    const double childTicket = 6.50; //declared const double with value 
    //of $6.050 per child ticket. 

    cout << "Please enter movie name \n"; //User prompt to enter movie name. 
    string movName; 
    getline(cin,movName); //Declared variable told name entered by user. 

    cout << "Please enter number of Adult tickets sold \n"; //User prompt to 
    //enter amounnt of adult tickets sold. 
    string adultTicketsSold; 
    getline(cin, adultTicketsSold); //Declared variable that holds number of 
    //adult tickets sold. 

    cout << "Please enter number of children tickets sold \n"; //User prompt 
    //to enter number of children tickets sold. 
    string childTicketsSold; 
    getline(cin,childTicketsSold); // Declared variable to hold number of 
    //child tickets sold. 

    string grossAdult; 
    grossAdult = adultTicket*adultTicketsSold; 

    double grossChild; 
    grossChild = childTicket*childTicketsSold; 

    double grossBox; 
    grossBox = grossAdult+grossChild; 

    double distributorTake; 
    distributorTake = grossBox*0.80; 

    double netBox; 
    netBox = grossBox*0.20; 

    cout << "Revenue Report" <<endl; 
    cout << "Movie name:" << movName <<endl; 
    cout << "Adult Tickets Sold:" << adultTicketsSold <<endl; 
    cout << "Child Tickets Sold:" << childTicketsSold <<endl; 
    cout << "Gross Box Office Profit: $" << grossBox <<endl; 
    cout << "Amount Paid to Distributor: $" << distributorTake <<endl; 
    cout << "Net Box Office Profit: $" << netBox <<endl; 
    return 0; 
} 
+0

Diese Compiler-Fehler bedeutet, dass Sie einen Operator (zB '*') auf zwei Typen verwenden, zwischen denen der Operator nicht definiert ist (zB 'std :: string' und' doubl e'; '0.5 *" Hallo Welt "' ergibt keinen Sinn!). Sieh dir deinen Code an und finde die Orte, an denen du diesen Fehler gemacht hast. – Conduit

Antwort

2

Die Probleme sind mit diesen Zeilen, Sie versuchen, eine std::string von einem double zu vermehren, statt zwei double zusammen multipliziert wird.

grossAdult = adultTicket*adultTicketsSold; 

Sie können std::stod

grossAdult = adultTicket * std::stod(adultTicketsSold); 

die std::string zu einem konvertieren double mit Oder wenn Sie bevorzugen Sie eine Eingabe double als nur akzeptieren kann stattdessen die Umwandlung tun

cout << "Please enter number of Adult tickets sold \n"; 
double adultTicketsSold; 
cin >> adultTicketsSold; 
+0

Für zukünftige Leser: 'stod' kann werfen, und irgendwann aus irgendeinem Grund wird Ihr Anruf zu ihr werfen, und Sie werden wünschen, Sie hätten einen" Versuch ... fangen " – AndyG

+0

@AndyG Guter Vorschlag. Und in diesem Sinne wäre es auch sinnvoll, den Stream nach der 'cin'-Alternative zu überprüfen. Falls sie einen nicht-numerischen Wert eingeben, können Sie' cin.good() 'überprüfen. – CoryKramer

Verwandte Themen