2016-03-05 91 views
-1

我目前正在研究一组代码,我们不得不重写所有正在写入的代码,并将其分解为两个子函数和main。我已经打破了,但我在阅读我的一个子功能时遇到了麻烦。我从来没有学过深入的参数传递,因为我的教授只是简单地提到了它。C++表达式在括号之前

我得到的错误是“显式调用的括号之前的表达式必须有(指针 - )函数类型。”

这是我在遇到问题的代码行:....

type = selectCarpet(type, unitPrice); 
unitPrice = oneRoom(pricePerSqYd, count, ftLength, ftWidth, ftSq, ydSq, squareYd, materialCost, totalCost, unitPrice); 

,这是功能:

#include <iostream> 
#include <iomanip> 
#include <conio.h> 
#include <string> 
using namespace std; 

const double BEST = 6.99, 
MEDIUM = 4.59, 
BASIC = 3.50, 
INSTALL = 129.99; 
const int NINE = 9; 


int selectCarpet(int type, int unitPrice); 

double oneRoom(double pricePerSqYd, int count, double ftLength, double ftWidth, int numRooms, double ftSq, double ydSq, int squareYd, double materialCost, double unitPrice, double totalCost); 

int main() 
{ 
    double ftLength,  // room length in feet 
    ftWidth,   // room width in feet 
    ftSq,   // square footage 
    ydSq,   // square yard 
    materialCost, // carpet material cost 
    totalCost,  // material cost plus install 
    grandTotal, 
    unitPrice; 
int squareYd,  // square yards, round off 
    type,   // carpet type 
    count, 
    numRooms; 
type = 0; 
unitPrice = 0; 
double pricePerSqYd, 
    oneRoom; 

type = selectCarpet(type, unitPrice); 

totalCost = 0; 
cout << "\nEnter number of rooms: "; 
cin >> numRooms; 

unitPrice = oneRoom(pricePerSqYd, count, ftLength, ftWidth, ftSq, ydSq, squareYd, materialCost, totalCost, unitPrice); 

// step 11 
grandTotal = 0; 
grandTotal += totalCost; 

cout << "\n\nThe grand total price is " 
    << grandTotal << endl; 

// step 13 
do 
{ 
    cout << "\n\t\t*** CARPET INSTALLATION ***\n\n"; 
    cout << "Select carpet type:\n" 
     << "1 - Best Quality, Unit Price $6.99\n" 
     << "2 - Medium Quality, unit price $4.59\n" 
     << "3 - Basic Quality, Unit price $3.50\n" 
     << "4 - exit\n" 
     << "Enter your choice --> "; 
    cin >> type; 
} while (type != 1 && type != 2 && type != 3 && type != 4); 

return 0; 
} 


int selectCarpet(int type, int unitPrice) 
{ 
do 
{ 
    cout << "\n\t\t*** CARPET INSTALLATION ***\n\n"; 
    cout << "Select carpet type:\n" 
     << "1 - Best Quality, Unit Price $6.99\n" 
     << "2 - Medium Quality, unit price $4.59\n" 
     << "3 - Basic Quality, Unit price $3.50\n" 
     << "4 - exit\n" 
     << "Enter your choice --> "; 
    cin >> type; 
} while (type != 1 && type != 2 && type != 3 && type != 4); 

while (type != 4) 
{ 
    // step 2 
    if (type == 1) unitPrice = BEST; 
    else if (type == 2) unitPrice = MEDIUM; 
    else if (type == 3) unitPrice = BASIC; 
} 

return unitPrice; 
} 

double oneRoom(double pricePerSqYd, int count, double ftLength, double ftWidth, int numRooms, double ftSq, double ydSq, int squareYd, double materialCost, double unitPrice, double totalCost) 
{ 
    for (count = 0; count < numRooms; count++) 
    { 
    cout << "Enter room length in feet: "; 
    cin >> ftLength; 
    cout << "Enter room diwth in feet: "; 
    cin >> ftWidth; 

    // step 5 
    ftSq = ftLength * ftWidth; 

    // step 6 
    ydSq = ftSq/NINE; 

    // step 7 
    squareYd = int(ydSq + .5); 

    // step 8 
    materialCost = squareYd * unitPrice; 

    // step 9 
    totalCost = materialCost + INSTALL; 

    // step 10 
    cout << setiosflags(ios::fixed | ios::showpoint) 
     << setprecision(2); 
    cout << "\n\nSquare footage of the room is: " << ftSq 
     << "\nSquare yard of the room is:\t" << ydSq 
     << "\nSquare yards priced for: " << squareYd 
     << "\nMaterial Cost:\t$" << materialCost 
     << "\nInstallation\t$" << INSTALL 
     << "\nTotal Cost\t$" << totalCost 
     << endl << endl; 
} 
return pricePerSqYd; 
} 

,因为我有几乎任何帮助表示赞赏不知道我在这里做什么。谢谢。

+0

什么是“selectCarpet”。你应该发布所有的代码,所以我们不必猜测。 –

+0

为什么他还在用脚,还没有过公制?!?! :) – BitTickler

+0

请提供[最小,**完整**和可验证的示例](http://www.stackoverflow.com/help/mcve)。可能'selectCarpet'实际上并不是一个函数。 – Barry

回答

1

此声明中main()

double pricePerSqYd, 
    oneRoom; 

阴影的功能的main()之外声明:

double oneRoom(..., ...); 

名称查找先找到变量,但你不能叫一个double。因此错误。只需重命名一个或另一个。