2013-06-30 2 views
-1

Я не могу для жизни меня выяснить, что не так, но следующие функции findLargest и findSmallest (а также функции findAcer, я считаю) работают не так, как должны и вернуть неверные значения. Что не так?Функции массива не работают должным образом (C++)

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int findLargest(int array[], int arraySize){ 
int largest = array[0]; //I set the largest to the first member of the array initially 
for (int i = 0; i < arraySize; ++i){ 
    if (array[i] > largest){ 
     largest = i; 
    } 
} 
return largest; 
} 

int findSmallest(int array[], int arraySize){ 
int smallest = array[0]; //I set the smallest to the first member of the array initially 
for (int i = 0; i < arraySize; ++ i){ 
    if (array[i] < smallest){ 
     smallest = i; 
    } 
} 
return smallest; 
} 

int findAverage(int array[], int arraySize){ 
int total = 0; 
for (int i = 0; i < arraySize; ++i){ 
    total += array[i]; 
} 
int average = total/arraySize; 

return average; 
} 

void display(int array[], int arraySize){ 

cout << "\nThe values for the array are: \n\n"; 

for (int i = 0; i < arraySize; ++i){ 
    cout << array[i] << endl; 
    } 
} 



int main(){ 

const int size = 50; 
int taker[size]; 
srand(time(NULL)); 

for (int i = 0; i < size; ++i){ 
    taker[i] = rand() % 100; //generate 50 random numbers for the array taker 
} 

int largest = findLargest(taker, size); 
int smallest = findSmallest(taker, size); 
int average = findAverage(taker, size); 

cout << "The largest entry was " << largest << endl; 
cout << "The smallest entry was " << smallest << endl; 
cout << "The average for all the entries is " << average << endl; 

display(taker, size); 

} 
+1

Как мы можем узнать, что вы хотите распечатать, если вы не скажете – aaronman

+0

Это довольно ясно ... мой вопрос здесь относится к функциям, они не дают мне правильных значений. – Tempto

+0

Действительно ли 'findLargest' должен возвращать наибольшее значение __value__ или __index__? Вы не сказали, что этот вопрос непонятен ... – Blastfurnace

ответ

2

если вы хотите вернуть указатель.

int findLargest(int array[], int arraySize){ 
int largest = array[0]; //I set the largest to the first member of the array initially 
int largestindex=0; 
for (int i = 0; i < arraySize; ++i){ 
    if (array[i] > largest){ 
     largestindex=i; 
     largest = array[i]; 
    } 
} 
return largestindex; 
} 

если вы хотите вернуть значение.

int findLargest(int array[], int arraySize){ 
int largest = array[0]; //I set the largest to the first member of the array initially 
for (int i = 0; i < arraySize; ++i){ 
    if (array[i] > largest){ 
     largest = array[i]; 
    } 
} 
return largest; 
} 
+0

Спасибо за ваши отзывы всем, очень оценили – Tempto

+0

Однако, еще один быстрый вопрос: если бы я хотел вернуть как индекс, так и значение, был бы «более чистый» способ, чем создавать для него почти идентичную функцию? – Tempto

+0

Вы можете создать структуру, содержащую оба. Или вы можете вернуть их в качестве параметров (используйте указатели). – Immueggpain

0

В findLargest вы устанавливаете largest к i не array[i]

1

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

Самый большой:

int findLargest(int array[], int arraySize){ 
    int largest = array[0]; //I set the largest to the first member of the array initially 
    for (int i = 0; i < arraySize; ++i){ 
     if (array[i] > largest){ 
      largest = array[i]; 
     } 
    } 
    return largest; 
} 

Наименьший:

int findSmallest(int array[], int arraySize){ 
    int smallest = array[0]; //I set the smallest to the first member of the array initially 
    for (int i = 0; i < arraySize; ++ i){ 
     if (array[i] < smallest){ 
      smallest = array[i]; 
     } 
    } 
    return smallest; 
} 

Ваша функция для среднего выглядит хорошо.

0

вы должны установить smallest = array[i];largest=array[i]; в их соответствующих функциях.

+0

Почему? Не могли бы вы предоставить более подробную информацию - возможно, показать, как ваш код должен быть вставлен, и объяснить, почему это важно? – jcsanyi

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