2010-10-27 29 views
0

\ a3.cpp(75):错误C2563:正式参数列表不匹配不匹配形式参数列表

我敢肯定我传递函数收银台用3个双打,我不不知道为什么我得到了我的错误。请帮忙。

#include <iostream> 
#include <cstdlib> 
using namespace std; 

const double peanut_PRICE = 1.80; 
const double peanut_SHIP = 0.50; 
const double BOOK_PRICE = 9; 
const double BOOK_SHIP = 1.06; 
const double MOVIE_PRICE = 13.99; 
const double MOVIE_SHIP = 0.05; 

double checkout (double myamountofbooks, double myamountofmovies, double mypoundsofpeanuts) 
{ 
    myamountofbooks = myamountofbooks * (BOOK_PRICE + BOOK_SHIP); 
    myamountofmovies = myamountofmovies * MOVIE_PRICE * (1 + MOVIE_SHIP); 
    mypoundsofpeanuts = mypoundsofpeanuts * (peanut_PRICE + peanut_SHIP); 
    return (myamountofbooks + myamountofmovies + mypoundsofpeanuts); 

} 

bool validUserImput (int whereUserWantsToGoNext) 
{ 

    if (whereUserWantsToGoNext > 50 || whereUserWantsToGoNext < 0) 
    return false; 
    else return true; 

} 

bool validUserImput (double whereUserWantsToGoNext) 
{ 

    if (whereUserWantsToGoNext > 50 || whereUserWantsToGoNext < 0) 
    return false; 
    else return true; 

} 

int main() 
{ 
//===========================Declaration Statements================================== 
double amountofbooks = 0; 
double amountofmovies = 0; 
double poundsofpeanuts = 0; 
int whereUserWantsToGoNext = 0; 


    while (! (whereUserWantsToGoNext == 4)) 
    { 
    cout << "1. Books\n2. Peanuts\n3. Movies\n4. Checkout\n" << endl; 
    cin >> whereUserWantsToGoNext; 
    if (!validUserImput(whereUserWantsToGoNext)) cout << "INVALID IMPUT" << endl; 

    if (whereUserWantsToGoNext == 1){ 
    cout << "Please enter your number of books"; 
    cin >> amountofbooks; 
    if (!validUserImput(amountofbooks)) cout << "INVALID IMPUT" << endl; 
    } 

    if (whereUserWantsToGoNext == 3){ 
    cout << "Now please enter the number of movies you've selected"; 
    cin >> amountofmovies; 
    if (!validUserImput(amountofmovies)) cout << "INVALID IMPUT" << endl; 
    } 

    if (whereUserWantsToGoNext == 2) { 
    cout << "Please enter the weight(in pounds) of your peanuts"; 
    cin >> poundsofpeanuts; 
    if (!validUserImput(poundsofpeanuts)) cout << "INVALID IMPUT" << endl; 
    } 
    if (validUserImput == 4) cout << "Total Cost is..." << checkout(amountofbooks, amountofmovies, poundsofpeanuts); 
    } 
cin >> amountofbooks; 
} 
+3

这个词是“输入”,如在输入/输出。 – 2010-10-27 19:00:14

+0

你的问题是你尝试结帐的最后一部分的复制/粘贴错误。 – 2010-10-27 19:04:56

回答

2

最后一个if - 你将函数指针与一个整数进行比较。试试这个:

if (validUserImput(3) == 4) cout << "Total Cost is..." << checkout(amountofbooks, amountofmovies, poundsofpeanuts); 
+0

你打我吧=/ – 2010-10-27 19:04:21

+0

'validUserImput'返回布尔型 – 2010-10-27 19:11:29

+0

@Charles Salvia validUserImput是一个函数,它将int作为参数m并返回一个布尔值。如果在调用示例时调用它,它是一个类型为bool(*)(int)的函数指针,而不是对函数validUserImput – 2010-10-27 19:37:23

2

的问题是在这里:

if (validUserImput == 4) ... 

validUserImput是一个函数,但是你是不是调用该函数,你试图把它比作4

如果您想跟踪收到的有效输入的数量,则可以添加一个新变量,您可以在每个有效输入上手动增加一个新变量。

1

我假设你想要显示checkout函数的结果,如果用户选择4。所以你可能想写:

if (whereUserWantsToGoNext == 4) cout << "Total Cost is..." << checkout(amountofbooks, amountofmovies, poundsofpeanuts) << endl;