2013-02-27 5 views
0

Я пишу программу для класса, которая берет сумму продажи и вычисляет изменение от доллара. Каждое наименование указано с количеством монет в качестве выхода. Я не могу запустить его из-за ошибки с слишком небольшим количеством аргументов?IntelliSense: слишком мало аргументов в вызове функции

Я не уверен, что VB ищет здесь. Любая помощь будет оценена по достоинству.

код программы:

#include <iostream> 
#include <string> 
#include <sstream> 
#include <iomanip> 
#include <cmath> 

using namespace std; 

// Determines how many of each coin to dispense. 
void Dispenser(int, int *, int *, int *, int *);          



int main(void) 
{ 
    // Change the console's background color. 
    system ("color F0"); 

     // Declares the variables. 
     double amount_paid = 1.00, amount_due;                
     int amount_left, dollar_qty, quarter_qty, dime_qty, nickel_qty, penny_qty; 

    // Get user input. 
    cout << "\n"; 
    cout << "Enter the money amount paid: $"; 
     cin >> amount_due; 
    cin.ignore(); 

    // Perform calculations. 
    amount_paid = amount_paid * 100 + 0.5; 
     amount_due = amount_due * 100; 

     amount_left = amount_paid - amount_due; 
     dollar_qty = amount_left/100; 

     Dispenser (amount_left + quarter_qty + dime_qty + nickel_qty + penny_qty); 

     "\n"; 


     // Display output. 
     cout << "\nAmount of the purchase: " << fixed << setprecision(2) << showpoint  << amount_due; 
     cout << "\nChange from $1.00: " << fixed << setprecision(2) << showpoint <<  amount_left; 
     cout << "\n" << fixed << setprecision(2) << showpoint << dollar_qty << "  dollars"; 
     cout << "\n" << fixed << setprecision(2) << showpoint << quarter_qty <<  "quarters"; 
     cout << "\n" << fixed << setprecision(2) << showpoint << dime_qty << "dimes"; 
     cout << "\n" << fixed << setprecision(2) << showpoint << nickel_qty <<  "nickles"; 
     cout << "\n" << fixed << setprecision(2) << showpoint << penny_qty <<  "pennies"; 

    system("pause"); 
     return 0; 
} 

void Dispenser(int amt_left, int *quarters, int *dimes, int *nickels, int *pennies) 
{ 
    int total_change, total_quarters, total_dimes, total_nickels, total_pennies; 

    // Determine change amount by quantity. 

    total_change = amt_left % 100; 
    total_quarters = total_change/25; 
    total_change = total_change % 25; 
    total_dimes = total_change/10; 
    total_change = total_change % 10; 
    total_nickels = total_change/5; 
    total_change = total_change % 5; 
    total_pennies = total_change; 

    *quarters = total_quarters; 
    *dimes = total_dimes; 
    *nickels = total_nickels; 
    *pennies = total_pennies; 
} 

Ошибка в этой строке на ")"

Dispenser (amount_left + quarter_qty + dime_qty + nickel_qty + penny_qty); 

ответ

2
Dispenser (amount_left + quarter_qty + dime_qty + nickel_qty + penny_qty); 

Должно быть

Dispenser (amount_left, &quarter_qty, &dime_qty, &nickel_qty, &penny_qty); 
+0

Это сработало, спасибо! Глупый вопрос, почему «&»? –

+0

Базовая функция ожидает адрес памяти и отправляет этот адрес функции вместо значения переменной. – Gyhth

5
Dispenser (amount_left + quarter_qty + dime_qty + nickel_qty + penny_qty); 

Должно быть

Dispenser (amount_left, quarter_qty, dime_qty, nickel_qty, penny_qty); 

Ваша версия действительно только один большой параметр сложения всех значений, в то время как один я представил, с запятыми, означает, что это 5 отдельных параметров отправки через к функция.

Смежные вопросы