-2

Program works and executes everything properly until I get to the part where the function calculates Annual Sales and Quarterly Averages. I'm not sure if the issue is in the function or in the displaying of the information.

The Annual Sales and Average Quarterly Sales display is -6.27744e+66

I feel like I'm missing something obvious.

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

struct Company
{
    string dName;                                                           // Stores Division Name
    double firstQSales;                                                     // First Quarterly Sales
    double sndQSales;                                                       // Second Quarterly Sales
    double thirdQSales;                                                     // Third Quarterly Sales
    double fourthQSales;                                                    // Fourth Quarterly Sales
    double annualSales;                                                     // Annual Quarterly Sales
    double avgQSales;                                                       // Average Quarterly Sales
};

const double NUM_OF_QUARTERS = 4;

void readCorpSales(Company*, int);
void displaySalesData(Company*, int);
void calculateAnnualSales(Company&);
void calculateQuarterlyAvg(Company&);

int main()
{
    int corporateSize;

    cout << "How many divisions does your corporate has: ";
    cin >> corporateSize;
    cin.ignore();

    while (corporateSize < 0)
    {
        cout << "Please enter a positive number: ";
        cin >> corporateSize;
    }

    Company* divisions = new Company[corporateSize];
    readCorpSales(divisions, corporateSize);
    displaySalesData(divisions, corporateSize);

    delete[] divisions;

    system("pause");
    return 0;
}

void readCorpSales(Company *divisions, int a)
{
    for (int i = 0; i < a; ++i)
    {
        cout << "Enter division's name: ";
        cin >> divisions[i].dName;

        cout << "Enter 1st quarter sales: ";
        cin >> divisions[i].firstQSales;

        cout << "Enter 2nd quarter sales: ";
        cin >> divisions[i].sndQSales;

        cout << "Enter 3rd quarter sales: ";
        cin >> divisions[i].thirdQSales;

        cout << "Enter 4th quarter sales: ";
        cin >> divisions[i].fourthQSales;

        cout << "\n";
    }
}

void displaySalesData(Company* divisions, int a)
{
    cout << "\n===============================";
    cout << "\n Corporate Data Sales Report";
    cout << "\n===============================\n";
    cout << "\nDivision Name";
    cout << "\t 1st Q ($)";
    cout << "\t 2nd Q ($)";
    cout << "\t 3rd Q ($)";
    cout << "\t 4th Q ($)";
    cout << "\t Annual Sales ($)";
    cout << "\t Avg Q Sales ($)\n";

    for (int i = 0; i < a; ++i)
    {
        cout << divisions[i].dName << "\t";
        cout << divisions[i].firstQSales << "\t";
        cout << divisions[i].sndQSales << "\t";
        cout << divisions[i].thirdQSales << "\t";
        cout << divisions[i].fourthQSales << "\t";
        cout << divisions[i].annualSales << "\t";
        cout << divisions[i].avgQSales << "\n";
    }

}

void calculateAnnualSales(Company &divisions)
{
    divisions.annualSales = divisions.firstQSales + divisions.sndQSales + divisions.thirdQSales + divisions.fourthQSales;
}

void calculateQuarterlyAvg(Company &divisions)
{
    divisions.avgQSales = divisions.annualSales / 4;
}
user4581301
  • 33,082
  • 7
  • 33
  • 54
Thomas
  • 1
  • 3
  • You never call `calculateAnnualSales` or `calculateQuarterlyAvg` anywhere – M.M Dec 04 '18 at 02:37
  • changing `new Company[corporateSize];` to `new Company[corporateSize]();` will at least mean they get initialized to `0.0` instead of garbage values – M.M Dec 04 '18 at 02:38
  • OH! Okay, thank you! I put calculateAnnualSales(divisions[i]); in my void ReadCorpSales and it started working. Could you explain why? – Thomas Dec 04 '18 at 02:43
  • 2
    What part of this requires explanation? You don't initialize `annualSales` and `avgQSales` to any value in any functions other than the ones that you forgot to call. – paddy Dec 04 '18 at 02:52
  • See also: [What is a debugger and how can it help me diagnose problems?](https://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-me-diagnose-problems) – Jesper Juhl Dec 04 '18 at 06:44

1 Answers1

0

Regarding the garbage value, maybe you can refer to this or this. Other thing, the answer from M.M covered the question

aixeta
  • 3
  • 3