2014-11-19 4 views
-2

В этом упражнении мы должны использовать текстовый файл, содержащий 20 номеров. Таким образом, максимальное количество обоих массивов должно быть равным 20. Используя функцию, мы должны заполнить массив. Каждое последующее положение в массиве будет рассчитанным значением на основе исходного начального значения и индекса в массиве следующим образом:
1) Добавить 45 в начальное значение
2) если положение массива равномерно делится на 3 :
А) вычисленное значение времен начального значения позиция массива
3) в противном случае:
А) вычисленное значением является начальным значение делится на позиции массива
4) Хранить рассчитанное значение в следующей позиции массива
5) Увеличьте количество значений в этом массивеОпределенные пользователем функции и массивы

По какой-то причине я получаю сообщение о том, что я не могу преобразовать аргумент 2 из 'int [20] в' int '?

void FillArray(ifstream& Ex5Numbers, int calculatedArray[], 
       int& numOfCalculatedValues, const int MAX) 
{ 
int index; 
int startValue; 

//Read the starting value 
Ex5Numbers >> startValue; 

//Filling the array through the input file 
for (index = 0; index <= MAX; index++) 
{ 
    //Store the start value into the array 
    calculatedArray[index] = startValue; 

    //Add 45 to the start value 
    startValue += 45; 

    //Calculate the next number in the array 
    if (numOfCalculatedValues/3 == 0) 
    { 
     startValue = index * startValue; 
    } 
    else 
    { 
     startValue = startValue/index; 
    } 

    //Increment the tag field for the array 
    numOfCalculatedValues++; 

} 
+0

Может быть, вы могли бы искать StackOverflow для «C++ проходящей функции массива», и посмотреть, что другие люди выложили? –

+0

Как вы отметили это как C++, почему бы вам не использовать контейнеры стандартной библиотеки C++? ('std :: vector', чтобы называть его), а не подверженные ошибкам массивы C-стиля? Это будет намного проще. – kebs

+1

Измените свой вопрос и добавьте код, который вызывает вашу функцию. –

ответ

0

Работает хорошо здесь (я заменил ifstream с стандом :: IStream, потому что я слишком ленив, чтобы открыть файл):

const int MAX = 20; 
int calculatedArray[MAX + 1]; // fix off-by-one error in FillArray 
int numOfCalculatedValues = 1; // must be one of the computation is off 

FillArray(std::cin, calculatedArray, numOfCalculatedValues, MAX); 

Примечания: (numOfCalculatedValues ​​/ 3 == 0) не испытание на делимость на 3.

Примечание2: передача numOfCalculatedValues ​​является вредным. Вместо этого используйте индекс.

Note3: у Вас есть ошибка вне по-одному, вы вычисления MAX + 1 элементов

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