2016-05-19 2 views
0

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

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

int largest(int[], int); 

main() 
{ 
const int size = 3; 
int a[size]; 

for (int i = 0; i < size; i++) 
{ cout << "Enter an array element "; 
    cin >> a[i]; 
} 


int large = largest(a,size); 
cout << "Largest is " << largest; 

return 0; 
} 

int largest (int a[], int size) 
{ 
    int largest; largest = a[0]; 


    for (int i = 1; i < size; i++) 
    { 
     if(a[i] > largest) 
     { 
     largest = a[i]; 
     return largest; } 
    } 

} 
+2

Переместить 'return most;' в конец функции (после цикла). –

+0

Это не проблема, но, как вопрос стиля, 'int most; наибольшее = a [0]; 'должно быть' int most = a [0]; '. Глупо создавать неинициализированное значение и сразу присваивать ему значение. –

+1

Проблема здесь: 'cout <<" Largest is "<< наибольший;'. Вы печатаете адрес функции, а не наибольшее число, которое было бы 'cout <<" Largest is "<< large;' – Bort

ответ

0

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

int largest (int a[], int size) 
{ 
    int largest; largest = a[0]; 
    for (int i = 1; i < size; i++) 
    { 
     if(a[i] > largest) 
      largest = a[i]; 
    } 
    return largest; 
} 
+0

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, как и/или почему он решает проблема улучшит долгосрочную ценность ответа. – cpburnz

0

У вас есть две проблемы: а) Вы возвращаетесь в первый раз что-то> а [0], б) вы захватить возвращаемое значение в large, но при печати largest, который будет печатать адрес функции.

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

int largest(int[], int); 

main() 
{ 
const int size = 3; 
int a[size]; 

for (int i = 0; i < size; i++) 
{ cout << "Enter an array element "; 
    cin >> a[i]; 
} 


int large = largest(a,size); 
cout << "Largest is " << large; // print LARGE not LARGEST 

return 0; 
} 

int largest (int a[], int size) 
{ 
    int largest; largest = a[0]; 


    for (int i = 1; i < size; i++) 
    { 
     if(a[i] > largest) 
      largest = a[i]; 
    } 
    return largest; // return AFTER the loop 
} 
Смежные вопросы