C ++ Void Function Confusion - PullRequest
       1

C ++ Void Function Confusion

0 голосов
/ 15 февраля 2011

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

Напишите пустую функцию GetSalesInfo, которая принимает следующее как ввод от пользователя

  • Номер счета
  • Дата продажи
  • Код графства
  • Общая продажа
  • Вес с упаковкой

Эта функция должна возвращать все эти входные данные вызывающей функции - Я больше всего запутался в этой части

Напишите следующие функции, возвращающие значение:

  • CalcDiscount - возвращает соответствующую скидку на продажу

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

void GetSalesInfo(int accNum,       // Account Number - IN
            int month,          // Month of sale - IN
            int day,            // Day of sale - IN
            int year,           // Year of sale - IN
            char countyCode,    // County Code - IN
            float total,        // Total Sale Amount (Before Tax) - IN
            int weight)         // Shipping Weight - IN
{

}

Кроме того, я не знаю, как получить доступ ко всей этой информации в функции CalcDiscount.

Я не прошу никого делать домашнее задание, мне просто нужно немного подтолкнуть в правильном направлении, и мой профессор никогда не сможет никому помочь.

Ответы [ 4 ]

4 голосов
/ 15 февраля 2011

Ну, в частности, она вызывает функцию void, что означает, что она вернет ничто через возвращаемое значение.

C ++ имеет ссылочные типы, которые расширяют способ C сделать это (передавая указатели на переменные, затем разыменовывая их, чтобы изменить их вне функции):

void GetSalesInfo (int &accNum,
                   int &month,
                   int &day,
                   :
                   :

Когда вы изменяете эти переменные в функции, они будут отражены обратно в переменные, которые вы передали.

Таким образом, ваша функция может просто вводить данные от пользователя и сохранять их в этих переменных. Затем, вернувшись в вызывающую функцию, вы получите их для передачи в CalcDiscount, что-то вроде:

float CalcDiscount (int accNum,
                    int month,
                    int day,
                    :
                    :
4 голосов
/ 15 февраля 2011

Я полагаю, что для первой функции достаточно использовать передачу по ссылке. Поместите символ & после типа данных, и любые изменения, внесенные в переменную, будут внесены в переданную переменную, а не просто в ее копию. Пример:

#include <iostream>

void increment(int& num) {
    num += 1;
}

int main(void) {
    int num = 0;
    increment(num);
    std::cout << num << std::endl;
    return 0;
}
0 голосов
/ 15 февраля 2011

Извините, но я считаю, что ваш реферат, который вы сделали, неверен, ваш УЧИТЕЛЬ хочет, чтобы функция принимала эти значения, то есть как в "cin", поэтому вы не будете передавать их непосредственно в функцию.

Аннотация будет выглядеть примерно так:

void GetSalesInfo()
{
  ////Code of the INPUT function here     
    * Account Number
    * Date of Sale
    * County Code
    * Total Sale
    * Shipping Weight    
}

void A()
{
  GetSalesInfo();

  // Here this GetSalesInfo would be responsible for acceting the values and returning it to the calling function "A"

  //The values would be returned with use of pointers only as your Teacher won't allow global variables :D

  //Rest of the code goes here
}
0 голосов
/ 15 февраля 2011

Согласен, плохо сформулировано. Очевидно, вы не можете вернуть несколько значений из функции, поэтому у вас есть два практических выбора.

  1. Возвращает объект данных, который инкапсулирует все эти значения (рекомендуется, но может не подходить для этого домашнего задания.
  2. Возьмите ссылки на несколько выходных параметров и назначьте их в функции.

Объявление функции просто не имеет смысла.

Кроме того, я не знаю, как получить доступ ко всей этой информации в функции CalcDiscount.

Это зависит от того, куда вам нужно позвонить. Вы, вероятно, будете вызывать его из GetSalesInfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...