Функция прототипа не возвращает значения, которые я хочу главной функции; что происходит? - PullRequest
0 голосов
/ 01 апреля 2020

Это классный проект, но я совершенно заблудился в этой части. Я полагаю, чтобы вернуть 3 значения основной функции. Когда я, наконец, подумал, что у меня есть это, я просто обнаружил, что вводимые мной значения не являются возвращаемыми значениями. Например, если я ввожу 8 и 4 в функцию прототипа, когда я возвращаю эти значения в основную функцию, они выводятся как 1 и какое-то длинное случайное число.

#include <iostream>
using namespace std;

// Declare prototype function
void OrderInfo();

int main(int A_SpoolsOrdered, int A_SpoolStock, double A_SpecialCharges)
{
    OrderInfo();
    cout << "\n";
    cout << "Order Summary\n";
    cout << "==================\n\n";
    // Returning values
    cout << "items ordered:\t" << A_SpoolsOrdered << "\n"; // OrderInfo input not matching final output
    cout << "Items in stock:\t" << A_SpoolStock;           // OrderInfo input not matching final output
}

void OrderInfo()
{
    // Declare Variables
    int SpoolsOrdered, SpoolStock;
    double SpecialCharges;
    char choice;

    // Ask user for spools ordered and spools in stock and store it
    cout << "How many spools were ordered? ";
    cin >> SpoolsOrdered;                           // Value to return
    cout << "How many spools are in stock? ";
    cin >> SpoolStock;                              // Value to return

    // Ask the user if there is any additional charges
    cout << "Are special shipping charges required? <y or n>: ";
    cin >> choice;

    switch (choice)
    {
    case 'y': cout << "Enter the amount of any special shipping charges: ";
        cin >> SpecialCharges;                      // Value to return
        main(SpoolsOrdered, SpoolStock, SpecialCharges);  //Attempt to return all values
        break;
    case 'n': break;
        main(SpoolsOrdered, SpoolStock, SpecialCharges);
    default: cout << "Invalaid input, run program again!\n";
        break;
    }
} 

1 Ответ

0 голосов
/ 01 апреля 2020

Вы делаете это задом наперед. Параметры вашего OrderInfo должны быть int&, int&, double& Ваш прототип должен выглядеть следующим образом:

void OrderInfo(int& A_SpoolsOrdered, int& A_SpoolStock, double& A_SpecialCharges);

Ваша функция main() может быть int main() или int main(int argc, char** argv), или int main(int argc, char** argv, char** envp). Затем вы вызываете OrderInfo в своей основной функции.

Я думаю, вы ищете что-то вроде этого:

#include <iostream>
using namespace std;

// Declare prototype function
void OrderInfo(int& A_SpoolsOrdered, int& A_SpoolStock, double& A_SpecialCharges);

int main()
{
    int A_SpoolsOrdered, A_SpoolStock; 
    double A_SpecialCharges;
    OrderInfo(A_SpoolsOrdered, A_SpoolStock, A_SpecialCharges);

    cout << "\nOrder Summary\n";
    cout << "==================\n\n";

    cout << "items ordered:\t" << A_SpoolsOrdered << "\n"; 
    cout << "Items in stock:\t" << A_SpoolStock;
    getch();
}

void OrderInfo(int& SpoolsOrdered, int& SpoolStock, double& SpecialCharges);
{
    // Declare Variables
    char choice;

    // Ask user for spools ordered and spools in stock and store it
    cout << "How many spools were ordered?\n";
    cin >> SpoolsOrdered;                           // Value to return
    cout << "How many spools are in stock?\n";
    cin >> SpoolStock;                              // Value to return

    // Ask the user if there is any additional charges
    cout << "Are special shipping charges required? <y or n>:\n";
    cin >> choice;

    switch (choice)
    {
    case 'y': cout << "Enter the amount of any special shipping charges:\n";
        cin >> SpecialCharges;                      // Value to return
        break;
    case 'n': break;
        cout << "OK, no special shipping charges.\n"
    default: cout << "Unknown value, assuming no special shipping charges.\n";
        break;
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...