2016-03-05 30 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。因此錯誤。只需重命名一個或另一個。