Как умножить функцию на другую функцию? и как мне правильно использовать параметры?
Я не совсем уверен, я действительно новичок в C++, и у меня всего около 14 недель занятий.
Что-то, что я пробовал, было бы созданием новой функции, предназначенной для умножения других функций, и в аргументах я бы указал имена функций.
Например:
float mealMath(numberOfAdults, mealChoosing){
//Rest of function
}
но я всегда получаю сообщение об ошибке. Пожалуйста, объясните, как это исправить, это большое препятствие в программировании для меня, и я не могу понять, как это исправить или заняться этим. Не ругайте меня за это. Спасибо!
int numberOfAdults(){
int totalAdults;
cout << "Now how many adults will there be?: ";
cin >> totalAdults;
cout << "It seems there will be: " << totalAdults << " Adults." << endl;
while(totalAdults < 1){
cout << "Sorry there has to be a minimum of 1 adult!" << endl;
cout << "How many adults: ";
cin >> totalAdults;
}
return 0;
}
int numberOfKids(){
int totalKids;
cout << "Now how many Kids will there be?: ";
cin >> totalKids;
cout << "It seems there will be: " << totalKids << " kids." << endl;
while(totalKids < 0){
cout << "Sorry there has to be a minimum of 1 Kid!" << endl;
cout << "How many Kids: ";
cin >> totalKids;
}
return 0;
}
float mealChoosing(){
float cost;
string mealChoise;
cout << " " << endl;
cout << "Now, What meal will you be getting(D/S): ";
cin >> mealChoise;
if (mealChoise == "D"){
cout << "It seems you have selected the Deluxe Meal plan for everyone!" << endl;
cost = 25.95;
}
if (mealChoise == "S"){
cout << "It seems you have selected the Standard Meal plan for everyone!" << endl;
cost = 21.75;
}
cout << " " << endl;
return cost;
}
Один из ожидаемых результатов: я хочу умножить ввод, который пользователь вводит в функцию «numberOfAdults», на ввод, который пользователь вводит для «выбора еды».
Итак, я хочу numberOfAdults * foodChoosing, но я хочу, чтобы это было сделано в другой функции, поэтому
"float total(){
float totalBill;
totalBill = numberOfAdults * mealChoosing;
cout << totalBill;"
Или что-то вдоль этих линий. Я не могу завершить этот проект, потому что по какой-то причине я не могу правильно предоставить функциям правильную информацию, необходимую в параметрах.
Ваш отступ тоже довольно странный, что очень затрудняет чтение этих функций.
Наконец, вы не делите и не умножаете функции, вы делите и умножаете результат функций, значения, которые они вернуть. Возможно, вам следует обновить, как вызывать функции.
В этом случае (и в большинстве случаев) вы не должны объявлять функцию, параметры которой являются функциями. Вместо этого объявите foodMath с целым числом и вводом с плавающей запятой:
float mealMath(int a, float b){/*Your code here*/}
А затем позже вызовите foodMath с двумя другими функциями, переданными в качестве аргументов.
float x = mealMath(numberOfAdults(), mealChoosing());
В качестве альтернативы вы можете не иметь параметров функции для mealMath()
и вместо этого вызывать numberOfAdults()
и mealChoosing()
изнутри функции.
Важно отметить, что большую часть времени вы будете вызывать функцию и использовать ее вывод в качестве аргумента, поэтому вам нужно будет поставить ()
после идентификатора функции, а не просто вводить идентификатор.
хорошо, так что я не буду лгать, я довольно запутался, как я могу ввести два целочисленных входа в foodMath, а затем, кажется, измениться и перейти к другим функциям? и где я могу вызвать в программе «float x = foodMath(numberOfAdults(), foodChoosing())»? это просто кажется запутанным, и я чувствую, что это проще, чем я делаю это в своей голове
Чтобы сначала ответить на ваш первый вопрос: у вас есть функции, которые выводят значения float/int, поэтому, когда вы передаете функцию в аргументы функции, она примет выведенное значение float/int переданной функции. Во-вторых, вы можете вызывать float x = mealMath(numberOfAdults(), mealChoosing());
где угодно, в любой функции, объявленной после.
Лайк mealChoosing()
возвращает totalAdults
и totalKids
(хотя здесь это не нужно) из numberOfAdults()
, numberOfKids()
соответственно.
int numberOfAdults() {
//...
return totalAdults;
}
int numberOfKids() {
//..
return totalKids;
}
float mealChoosing() {
//..
return cost;
}
Теперь на mealMath(numberOfAdults, mealChoosing)
float mealMathOutput = mealMath(numberOfAdults(), mealChoosing());
Обратите внимание, что ваши функции
numberOfAdults
иnumberOfKids
будут возвращать всегда0
.