Попытка передать массив в качестве аргумента, получая двойной [4] для двойной ошибки преобразования - PullRequest
2 голосов
/ 08 октября 2011

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

Ошибка, которую я получаю при компиляции: ошибка 1 Ошибка C2664: «FindHighest»: невозможно преобразовать параметр 1 из «double [4]» в «double» g: \ cis5 \ week6 \ week6 \ problem3.cpp 311 неделя6

Вот код:

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

double GetSales(string);
void FindHighest(double);
void Validate(double&, string);

const int NUMBER_OF_REGIONS = 4;
const string REGION[NUMBER_OF_REGIONS] = {"Northeast", "Southeast", "Northwest", "Southwest"};

int main(){ 
    double sales[NUMBER_OF_REGIONS] = {0.0};

    //This loop calls the function GetSales as it proceeds forward through the REGION array
    for (int i = 0; i < 4; i++){
        sales[i] = GetSales(REGION[i]);
    }

    FindHighest(sales);

    cin.ignore();
    cin.get();
    return 0;
}


//This function receives the region as a string and gathers the sales figure as input. It also calls the function Validate to vaildate that the sales figure is over $0.0
double GetSales(string region){
    double sales = 0.0;

    cout << "\nWhat is the total sales for " << region << " division: ";
    cin >> sales;
    Validate(sales, region);

    return sales;
}

//This function receives the sales figures as an array and determines which division had the highest sales and displays the name and amount
void FindHighest(double sales[]){
    string region = "";
    double highestSales = 0.0;

    for (int i = 0; i < NUMBER_OF_REGIONS; i++){
        if (sales[i] > highestSales){
            highestSales = sales[i];
            region = REGION[i];
        }
    }

    cout << fixed << showpoint << setprecision(2);
    cout << "The " << region << " division had the highest sales with a total of $" << highestSales;
}

//This function validates the sales input from the GetSales function
void Validate(double &sales, string region){
    while (sales < 0){
        cout << "I am sorry but this cannot be a negative number." << endl;
        cout << "Please enter a positive sales figure for " << region << " division: ";
        cin >> sales;
    }
}

Ответы [ 2 ]

3 голосов
/ 08 октября 2011

Ваша проблема вверху, где вы объявляете void FindHighest(double);

Это не соответствует определению FindHighest.

2 голосов
/ 08 октября 2011

Вы забыли упомянуть, что параметр является массивом в объявлении функции

void FindHighest(double);

попробуйте сделать это

void FindHighest(double[]);
...