2015-06-22 2 views
2

Здравствуйте, программисты!Нет совпадений для ошибки 'operator *'

Я собирался написать небольшую программу для расчета общей суммы оплаты за разные периоды времени в зависимости от количества часов и зарплаты, которую вводит пользователь. Мне удалось сделать небольшой кусочек программы, но когда я пытаюсь запустить его и протестировать его, я получаю следующее сообщение об ошибке:

Line 33: error: no match for 'operator*' in 'pay * hours_day' 

Я пытался делать поиск Google по этой проблеме, но я действительно запутался, что вызывает Это.

вот мой полный код программы:

#include <iostream> 
#include <random> 
#include <time.h> 
#include <cstdlib> 
#include <string> 

using namespace std; 

/* 

*Program Flowchart* 

- Find out how much a worker gets paid per hour, and then find out how many hours they work 
a day, and then multiply that to get the total pay in a week or a month or a year. 

*/ 

// global variables 

string pay; 
float hours_day; 


// function that takes the amount of money and calculates the total pay in a week 
int total_pay_week() { 
    cout << "Type in your salary per hour." << endl; 
    cin >> pay; 
    cout << "Ok, how many days do you work per day?" << endl; 
    cin >> hours_day; 

    float total_day = pay * hours_day; 

    float total_week = total_day * 7; 

    cout << "Your total pay in a week is " << total_week << "if you worked " << hours_day << " per day. " << endl; 

} 


int main() { 

    total_pay_week(); 

} 

Это очень ранняя версия моей программы! Я просто хотел знать, что вызывает эту проблему.

+4

Что вы можете получить, если вы размножаете яблоки с апельсинами? – 101010

+0

'cout <<« Хорошо, сколько дней вы работаете в день? » << endl; ', вероятно, не то, что вы хотели сказать. – djs

+0

Я только что понял. У меня очень глупая ошибка! Но спасибо вам обоим! – TeeKayM

ответ

1

Как @ 101010 намекает на: pay является string, а hours_day является float, и в то время как некоторые языки позволяют умножать строки с целыми числами, с ++ 11 (или любой другой аромат с) не делает, много меньше, чтобы строки и поплавки умножались вместе.

+0

Является ли C++ 11 ароматом C? : P –

+0

@ E_net4: Это 11 лучше! –

+0

C++ 11 не является «ароматом _ [sic] _ of C» –

0

Вы объявили pay как string. Измените это на int или float, и оно должно умножаться. Класс std::string не имеет оператора * для этой математики, поэтому объясняет текст ошибки.

1

Я понял, что объявил переменную pay как строку правильно, поскольку я пытался ее решить. Спасибо всем, хотя! Это была очень неудачная ошибка.

0

Вы можете обновить свой программный код, как указано ниже, чтобы исправить проблему. Поскольку Скотт предложил вам вводить ввод как строку и пытаться умножить его на float, что невозможно. Вам нужно принимать ввод как float, и все будет работать.

#include <iostream> 
#include <random> 
#include <time.h> 
#include <cstdlib> 
#include <string> 

using namespace std; 

/** 
* *Program Flowchart* 
* 
* - Find out how much a worker gets paid per hour, and then find out how many hours they work 
* a day, and then multiply that to get the total pay in a week or a month or a year. 
*/ 

// global variables 

float pay; 
float hours_day; 


// function that takes the amount of money and calculates the total pay in a week 
int total_pay_week() 
{ 
    cout << "Type in your salary per hour." << endl; 
    cin >> pay; 
    cout << "Ok, how many days do you work per day?" << endl; 
    cin >> hours_day; 

    float total_day = pay * hours_day; 

    float total_week = total_day * 7; 

    cout << "Your total pay in a week is $" << total_week << " as you are working " << hours_day << " hours per day. " << endl; 

} 

int main() 
{ 
    total_pay_week(); 
} 

Оформить заказ https://ideone.com/mQj3mh для фактического выполнения кода.

Смежные вопросы