我正在解決這個問題,我一直在展示我需要的東西。這是問題:
撰寫一個程式,確定公司四個部門(東北部、東南部、西北和西南)中哪個部門在一個季度的銷售額最高。它應該包括以下兩個由main呼叫的函式。
double getSales() 傳遞一個部門的名稱。它向用戶詢問部門的季度銷售資料,驗證輸入,然后回傳。每個部門都應該呼叫一次。
void findHighest() 傳遞了四個銷售總額。它確定哪個是最大的,并列印出高收入部門的名稱及其銷售額。
除了顯示部門名稱之外,我能夠弄清楚所有事情。我一般是編碼新手,所以如果我在這里有其他我不知道的錯誤,請多多包涵。我已經盡我所能查找了所有內容,并進行了很多更改,但仍然迷失方向。請幫忙!
這是我的代碼:
#include <iostream>
#include <string>
using namespace std;
// Variable Declerations
const string NE = "Northeast";
const string SE = "Southeast";
const string NW = "Northwest";
const string SW = "Southwest";
double getSales(string);
void findHighest(double, double, double, double);
int main()
{
double salesNE, salesSE, salesNW, salesSW;
string division;
salesNE = getSales(NE);
salesSE = getSales(SE);
salesNW = getSales(NW);
salesSW = getSales(SW);
findHighest(salesNE, salesSE, salesNW, salesSW);
cout << "by " << division << endl;
return 0;
}
double getSales(string division)
{
double sales;
cout << "Enter the quarterly sales figure for " << division << endl;
cin >> sales;
while (sales < 0)
{
cout << "Invalid input. Please enter a positive integer.";
cin >> sales;
}
return sales;
}
void findHighest(int salesNE, int salesSE, int salesNW, int salesSW)
{
int divisions[] = { salesNE, salesSE, salesNW, salesSW};
int max;
max = divisions[0];
for (int count = 1; count > 5; count )
{
if (divisions[count] < max)
max = divisions[count];
}
/*
cout << division << endl; - does not show.
*/
cout << " is the division with the highest sales total of: " << max << endl;
}
uj5u.com熱心網友回復:
你已經解決了這個問題,只是你沒有完成它。在findHighest()
中,您將銷售資料放入一個陣列中。因此,您已經知道哪個值與哪個部門有關。只需對部門名稱做同樣的事情,然后找到銷售額最高的陣列索引,這樣就可以在同一索引處顯示部門名稱。
您的代碼還有其他一些問題:
的宣告和定義
findHighest()
不匹配。當說明清楚地告訴您改為顯示時,您正在嘗試顯示
division
in 。main()
findHighest()
getSales()
不考慮用戶可能輸入不可轉換為double
.你的
for
回圈findHighest()
編碼錯誤。它需要在計數器中使用而不是,并且< 4
在比較中需要使用而不是。> 5
> max
< max
試試這個:
#include <iostream>
#include <string>
#include <limits>
using namespace std;
// Variable Declerations
const string NE = "Northeast";
const string SE = "Southeast";
const string NW = "Northwest";
const string SW = "Southwest";
double getSales(string);
void findHighest(double, double, double, double);
int main()
{
double salesNE, salesSE, salesNW, salesSW;
salesNE = getSales(NE);
salesSE = getSales(SE);
salesNW = getSales(NW);
salesSW = getSales(SW);
findHighest(salesNE, salesSE, salesNW, salesSW);
return 0;
}
double getSales(string division)
{
double sales;
cout << "Enter the quarterly sales figure for " << division << endl;
do
{
if (cin >> sales)
{
if (sales >= 0) break;
cout << "Invalid input. Please enter a positive number.";
}
else
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Please enter a valid number.";
}
}
while (true);
return sales;
}
void findHighest(double salesNE, double salesSE, double salesNW, double salesSW)
{
double sales[] = { salesNE, salesSE, salesNW, salesSW };
string divisions[] = { NE, SE, NW, SW };
int highest;
double max;
highest = 0;
max = sales[0];
for (int index = 1; index < 4; index)
{
if (sales[index] > max)
{
highest = index;
max = sales[index];
}
}
cout << divisions[highest] << " is the division with the highest sales total of: " << max << endl;
}
divisions[]
如果您將陣列移動到全域范圍,并使用陣列main()
來保存銷售資料,則可以進一步簡化。說明只是說要求數字并將它們傳遞給findHighest()
,但他們沒有說明如何保存和傳遞它們:
#include <iostream>
#include <string>
#include <limits>
using namespace std;
// Variable Declerations
const string divisions[] = { "Northeast", "Southeast", "Northwest", "Southwest" };
const int numDivisions = sizeof(divisions)/sizeof(divisions[0]);
double getSales(string);
void findHighest(double[]);
int main()
{
double sales[numDivisions];
for(int index = 0; index < numDivisions; index)
{
sales[index] = getSales(divisions[index]);
}
findHighest(sales);
return 0;
}
double getSales(string division)
{
double sales;
cout << "Enter the quarterly sales figure for " << division << endl;
do
{
if (cin >> sales)
{
if (sales >= 0) break;
cout << "Invalid input. Please enter a positive number.";
}
else
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Please enter a valid number.";
}
}
while (true);
return sales;
}
void findHighest(double sales[])
{
int highest = 0;
double max = sales[0];
for (int index = 1; index < numDivisions; index)
{
if (sales[index] > max)
{
highest = index;
max = sales[index];
}
}
cout << divisions[highest] << " is the division with the highest sales total of: " << max << endl;
}
或者:
#include <iostream>
#include <string>
#include <limits>
using namespace std;
// Variable Declerations
struct Division
{
string name;
double sales;
}
Division divisions[] =
{
{"Northeast", 0.0},
{"Southeast", 0.0},
{"Northwest", 0.0},
{"Southwest", 0.0}
};
const int numDivisions = sizeof(divisions)/sizeof(divisions[0]);
double getSales(string);
void findHighest();
int main()
{
for(int index = 0; index < numDivisions; index)
{
divisions[index].sales = getSales(divisions[index].name);
}
findHighest();
return 0;
}
double getSales(string division)
{
double sales;
cout << "Enter the quarterly sales figure for " << division << endl;
do
{
if (cin >> sales)
{
if (sales >= 0) break;
cout << "Invalid input. Please enter a positive number.";
}
else
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Please enter a valid number.";
}
}
while (true);
return sales;
}
void findHighest()
{
int highest = 0;
double max = divisions[0].sales;
for (int index = 1; index < numDivisions; index)
{
if (divisions[index].sales > max)
{
highest = index;
max = divisions[index].sales;
}
}
cout << divisions[highest].name << " is the division with the highest sales total of: " << max << endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/467251.html