配列内の信号の振幅(最大値)を見つけるための関数とポインター

アレックスビックフォード

私の講師はライブコードクリニックでこの関数を作成しました。コードを学習して理解するまで、それをコピーしてから何度も書き直そうとしています。

現在、プログラムを実行するために「findgreatest」関数をどこで定義する必要があるのか​​わかりません。main()内で関数を定義する必要があるという印象を受けました。ただし、表示されていないエラーがさらにある可能性があります。とにかく、このコードを実行してより詳細に説明するためのいくつかの助けをいただければ幸いです。

ありがとう

アレックス

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

int main(int argc, const char * argv[]) {

    const unsigned int size = 15;            // creates a const int for array
    int a_sig [size];                        // assigns int to array size

    for(int i=0; i<size; i++) {        
        a_sig[i] = rand() % 100;                 
        cout << *(a_sig+i) << endl;             
    }

    int findgreatest (int size, int a_sig) {  //"F deceleration not allowed"
        int max = -1;                           
        for (int i = 0; i < size; i++) {         
            if (*(a_sig+i) > max){
                max = *(a_sig+i);
            }
        }
        return max;
    };


    int maximum;

    maximum = findgreatest(size, a_sig);     //"undeclared identifier" 

    return 0;
};
davidlowryduda

現在、プログラムを実行するために「findgreatest」関数をどこで定義する必要があるのか​​わかりません。main()内で関数を定義する必要があるという印象を受けました。

実際、mainで名前付き関数を定義することはできませんこれはエラーで確認できますdeclaration not allowed

関数は使用前に宣言する必要があります。コンパイル中に、コンパイラは関数が定義されている場所を記録します。コンパイラーは、これらの関数の1つが呼び出されるのを見ると、これらの関数が存在することを認識しているため、どの命令を入れるかを認識しています。ただし、関数が宣言(および定義)されていない場合、コンパイラーは関数呼び出しを解釈できません。

mainの前に関数を定義するか、mainの前に関数を宣言してmainの後に定義する必要があります。

オプション:メインの前に関数を定義する

mainの前に関数を定義したい場合、コードは次のようになります。

#include <iostream>
#include <ctime>
#include <cstdlib>  // rand is defined here
using namespace std;

// Defines findgreatest
// findgreatest is now available for use later in program
int findgreatest (int size, int a_sig[]) // I added a `[]` in this signature
{
    int max = -1;                           
    for (int i = 0; i < size; i++) {         
        if (*(a_sig+i) > max){
            max = *(a_sig+i);
        }
    }
    return max;
}

int main(int argc, const char * argv[]) {

    const unsigned int size = 15;            // creates a const int for array
    int a_sig [size];                        // assigns int to array size

    for(int i=0; i<size; i++) {        
        a_sig[i] = rand() % 100;                 
        cout << *(a_sig+i) << endl;             
    }

    int maximum;
    maximum = findgreatest(size, a_sig);

    // You probably want to do something with the maximum?
    cout << "\nMaximum is " << maximum << endl;

    return 0;
} // (I removed an unnecessary semicolon here)

オプション:mainの前に関数を宣言し、後に定義する

または、関数を宣言して(つまり、名前と署名の説明を付けて)、後で定義することもできます。あなたはこれを行うことができます

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

// declares findgreatest
// The compiler knows that this function is defined somewhere and can make
// references to it. If the definition isn't also provided during compilation,
// an error is raised.
int findgreatest (int size, int a_sig[]);

int main(int argc, const char * argv[]) {

    const unsigned int size = 15;            // creates a const int for array
    int a_sig [size];                        // assigns int to array size

    for(int i=0; i<size; i++) {        
        a_sig[i] = rand() % 100;                 
        cout << *(a_sig+i) << endl;             
    }

    int maximum;
    maximum = findgreatest(size, a_sig);

    // You probably want to do something with the maximum?
    cout << "\nMaximum is " << maximum << endl;

    return 0;
}
// Definition
int findgreatest (int size, int a_sig[])
{
    int max = -1;                           
    for (int i = 0; i < size; i++) {         
        if (*(a_sig+i) > max){
            max = *(a_sig+i);
        }
    }
    return max;
}

その他の注意事項

  1. を使用するにはrand()、する必要があり#include <cstdlib>ます。
  2. 最大値を計算しますが、何もしません。mainの最後にこれを端末に出力するステートメントを追加しました。
  3. の後にセミコロンを削除しましたmain(){}
  4. 関数のシグネチャfindgreatest(int size, int a_sig)が正しくありません。2番目の引数は配列であり、intではありません。これを示す方法はいくつかありますがfindgreatest(int size, int a_sig[])、配列を予期する必要があることをコンパイラーに示すように変更しました。

配列についてさらに学ぶと、それについてもう少し知ることができます。そして、あなたはおそらく*(a_sig + i)少し奇妙な表現を再訪するでしょう

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

配列内の値を見つけるためのJavascriptオールインワン関数

分類Dev

配列の最大値へのポインタを見つける

分類Dev

cの未知の型配列で最大要素を見つける方法(関数へのポインターを使用)

分類Dev

呼び出された関数で使用されたときに異なる値を与えるCの配列のサイズを見つけるためのポインターハックの理由

分類Dev

関数内のポインターの配列を埋める

分類Dev

NodeJS:オブジェクトの配列内の最小値と最大値を見つけるためのArray.reduce

分類Dev

配列内の複数の値を見つけるための最良の方法

分類Dev

配列内の最小値と最大値を見つける

分類Dev

配列の最大値を見つける関数を作りたい

分類Dev

配列内の最大n値のインデックスを見つける方法

分類Dev

リスト内の最大値とそのインデックスを見つけるためのPythonの方法?

分類Dev

配列内の最大の数値を見つけるためのコードですが、最初の数値のみが最大として表示されます。誰かが理由を教えてください

分類Dev

ソートされた配列内で指定された値よりも最小および最大の要素を見つけるためのバイナリ検索?

分類Dev

配列内の2つの類似した数値のインデックスを見つける方法は?

分類Dev

n番目のインスタンスごとにNumpy配列の最大値を見つける

分類Dev

配列内の列の最大値を見つける

分類Dev

リンクリスト内の最大値と最小値を見つけるために、Javaの書込みの二つの方法の最小値と最大値を使用しますが、入力リストは、整数の配列であります

分類Dev

JSON配列内の要素を見つけるためのインデックス

分類Dev

PYTHON-配列内の10個の整数ごとの最大値を見つける

分類Dev

間隔内の未知の関数の最大値を見つける

分類Dev

Java-配列内の最小の2つの数値を見つけるための再帰

分類Dev

Cの関数を使用して、配列の最大値と最小値を見つける

分類Dev

最大4つの数値を見つけるためのユーザー定義関数

分類Dev

配列内のjsonオブジェクトの現在のインデックスを見つけるための関数はありますか?

分類Dev

分割統治法を使用すると、配列内の最大値と最小値を見つけるための時間計算量が向上しますか

分類Dev

配列内の次の最大値を見つける方法

分類Dev

配列内の最大値の出現を見つける

分類Dev

配列内の特定の最大値を見つける

分類Dev

配列の最大値を見つける

Related 関連記事

  1. 1

    配列内の値を見つけるためのJavascriptオールインワン関数

  2. 2

    配列の最大値へのポインタを見つける

  3. 3

    cの未知の型配列で最大要素を見つける方法(関数へのポインターを使用)

  4. 4

    呼び出された関数で使用されたときに異なる値を与えるCの配列のサイズを見つけるためのポインターハックの理由

  5. 5

    関数内のポインターの配列を埋める

  6. 6

    NodeJS:オブジェクトの配列内の最小値と最大値を見つけるためのArray.reduce

  7. 7

    配列内の複数の値を見つけるための最良の方法

  8. 8

    配列内の最小値と最大値を見つける

  9. 9

    配列の最大値を見つける関数を作りたい

  10. 10

    配列内の最大n値のインデックスを見つける方法

  11. 11

    リスト内の最大値とそのインデックスを見つけるためのPythonの方法?

  12. 12

    配列内の最大の数値を見つけるためのコードですが、最初の数値のみが最大として表示されます。誰かが理由を教えてください

  13. 13

    ソートされた配列内で指定された値よりも最小および最大の要素を見つけるためのバイナリ検索?

  14. 14

    配列内の2つの類似した数値のインデックスを見つける方法は?

  15. 15

    n番目のインスタンスごとにNumpy配列の最大値を見つける

  16. 16

    配列内の列の最大値を見つける

  17. 17

    リンクリスト内の最大値と最小値を見つけるために、Javaの書込みの二つの方法の最小値と最大値を使用しますが、入力リストは、整数の配列であります

  18. 18

    JSON配列内の要素を見つけるためのインデックス

  19. 19

    PYTHON-配列内の10個の整数ごとの最大値を見つける

  20. 20

    間隔内の未知の関数の最大値を見つける

  21. 21

    Java-配列内の最小の2つの数値を見つけるための再帰

  22. 22

    Cの関数を使用して、配列の最大値と最小値を見つける

  23. 23

    最大4つの数値を見つけるためのユーザー定義関数

  24. 24

    配列内のjsonオブジェクトの現在のインデックスを見つけるための関数はありますか?

  25. 25

    分割統治法を使用すると、配列内の最大値と最小値を見つけるための時間計算量が向上しますか

  26. 26

    配列内の次の最大値を見つける方法

  27. 27

    配列内の最大値の出現を見つける

  28. 28

    配列内の特定の最大値を見つける

  29. 29

    配列の最大値を見つける

ホットタグ

アーカイブ