2016-05-19 1 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

関数の最後(ループの後ろ)に '戻り最大; 'を移動します。 –

+0

これは問題ではありませんが、スタイルの問題として、 'int int;最大値= a [0];は 'int最大= a [0];'でなければなりません。初期化されていない値を作成し、即座に値を割り当てるのは愚かです。 –

+1

問題はここにあります: 'cout <<"最大は "<<最大;"です。最大の番号ではなく、関数のアドレスを 'cout <<"で表示します。最大値は "<< large;"です。 – Bort

答えて

0

Returnステートメントは、最大値を見つけるために、forループの後でなければなりません。

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

は、次の2つの問題があります。a)あなたは、[0]、B)あなたは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 
} 
関連する問題