Как умножить/поделить одну функцию на другую? Как использовать параметры?

Как умножить функцию на другую функцию? и как мне правильно использовать параметры?

Я не совсем уверен, я действительно новичок в 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;"

Или что-то вдоль этих линий. Я не могу завершить этот проект, потому что по какой-то причине я не могу правильно предоставить функциям правильную информацию, необходимую в параметрах.

Обратите внимание, что ваши функции numberOfAdults и numberOfKids будут возвращать всегда0.

Some programmer dude 29.05.2019 06:28

Ваш отступ тоже довольно странный, что очень затрудняет чтение этих функций.

Some programmer dude 29.05.2019 06:29

Наконец, вы не делите и не умножаете функции, вы делите и умножаете результат функций, значения, которые они вернуть. Возможно, вам следует обновить, как вызывать функции.

Some programmer dude 29.05.2019 06:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
187
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В этом случае (и в большинстве случаев) вы не должны объявлять функцию, параметры которой являются функциями. Вместо этого объявите 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())»? это просто кажется запутанным, и я чувствую, что это проще, чем я делаю это в своей голове

NoobCISKid 29.05.2019 18:36

Чтобы сначала ответить на ваш первый вопрос: у вас есть функции, которые выводят значения float/int, поэтому, когда вы передаете функцию в аргументы функции, она примет выведенное значение float/int переданной функции. Во-вторых, вы можете вызывать float x = mealMath(numberOfAdults(), mealChoosing()); где угодно, в любой функции, объявленной после.

Dylan Gentile 30.05.2019 01:38

Лайк 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());

Другие вопросы по теме