2017-07-06 21 views
-4

から引数1を渡し、私は、非常に単純なこのコードを持っており、それは私に関数max(上のエラーを与える)、私は最新のprintfからそれを呼び出す:C - 互換性のないポインタ型

#include <stdio.h> 

float max(float v[], int n){ 
    float maxim = v[0]; 
    for(int i = 0; i < n; i++){ 
    if(maxim < v[i]){ 
     maxim = v[i]; 
    } 
    } 
    return maxim; 
} 

void main(){ 
    int v[10], n; 
    float x; 

    for(int i = 0; i < 10; i++){ 
    printf("Introduza %d de 10 números: ", i+1); 
    scanf(" %f", &x); 
    v[i] = x; 
    } 

    printf("Indique o número de elementos que pretende avaliar: "); 
    scanf(" %d", &n); 

    printf("O maior valor introduzido entre os %d primeiros números foi %f", n, max(v,n)); 
} 

テキストでありますポルトガル語ですが、それは問題ではありません。 エラー:

warning: passing argument 1 of ‘max’ from incompatible pointer type [-Wincompatible-pointer-types] 

私はいくつかのスレッドを見ましたが、私は、これは違うと思います。誰かが私を助けることができますか?

+4

'MAX(V、n)は渡された' v'が '' int'配列ですが、 'max'は' float'配列を望んでなければならないことに注意してください。 –

+0

だから、nooby :(どうして私はそれを逃すことができますか?ありがとう – MoonWalker

+1

各要素に 'float x'を割り当てているので、おそらく' main'に 'float v [10]'を入れてほしいでしょう –

答えて

1

max(v,n)渡さvint配列ですが、maxfloat配列を望んでいます。

mainfloat v[10]も必要です。これは、各要素にfloat xを割り当てているためです。

しかし、floatを使用する必要がある理由がない限り、doubleを使用します。別に

main

int main(void) 
+0

私はエクササイズをフォローしているのでfloatを使用していますが、実際のベクトルを受け取るfloat max(float v []、int n)を実装するように要求しました。評価する要素の数。ベクトルの最初のnの中で最大の数を返します。 – MoonWalker

+0

古い参照資料を使用していますか? –

+0

本は2013年に編集され、1999年に最初に書かれました。はい古い教材:D – MoonWalker

0

変更この:

void main(){ 
    int v[10], n; 
    float x; 

には:

void main(){ 
    float v[10]; 
    int n; 
    float x; 
+0

'void main()'は、最高でも 'main()'の実装依存の署名です。標準に同意するには、 'int main(void)'、 'int main(int argc、char * argv [])'でなければなりません。 –

関連する問題