0

入力値を渡す 1 つの関数を作成し、calculate_TB、calculate_TB などの結果を含む構造体を返す方法について助けが必要です

現在、必要なものとは反対の struct stats から値を返す一連の関数があります。

struct stats

{
    int singles;
    int doubles;
    int triples;
    int home_runs;
    int at_bats;
    int hits;
    int BA;
    int TB;
    int HR_ratio;
    int SA;
};

........機能................

int main()
{


    int i, hits;



    hits_number=calculate_hits_number(sta);

    /* calling function  */
    calculate_TB(sta);


    calculate_BA(sta);


    calculate_HR_ratio(sta);


    calculate_SA(sta);



     /* printing the output using arrays */

    printf("%6d",hits_number);
    printf("\t\t\t%6d", sta.TB);
    printf("\t\t\t\t%6d", sta.BA);
    printf("\t\t\t\t%6d",sta.HR_ratio);
    printf("\t\t\t\t%6d", sta.SA);
    printf("\n");

 return (0);
}
4

3 に答える 3

0

これは完全な回答を意図したものではありませんが、singles + doubles の追加を行う必要がある場合は、関数定義部分について上記の質問に具体的に対処します。

int singles_plus_doubles(struct stats temp)
{
   return temp.singles+temp.doubles;
}

構造内のデータのさまざまなバリエーションを自由に宣言して使用できます。通常、このような特定の関数を作成するのではなく、構造体へのポインターをワーカー関数に渡し、メンバーを使用して値を提供したり、値を受け取ったりしてから、呼び出し元の関数に new で返します。情報。@ChuckCottrill の回答 (この同じ投稿内) を見てみる価値はあると思います。

于 2013-11-08T20:36:47.480 に答える
0

私はあなたの質問を理解しているかどうかわかりませんが、引数の束から構造を初期化し、calculate_XX を自動的に呼び出す関数が必要ですか? もしそうなら、これを見てください:

typedef struct stats stats;

stats *your_function(int your_arguments) {

    stats *mystruct = malloc(sizeof(stats));
    if(!mystruct)
        // Initialisation failed, do something.

    mystruct->whatever_field = your_arguments;
    // ...
    mystruct->BA = calculate_BA(arguments_for_this);
    // ...
    return mystruct;
}
于 2013-11-08T20:15:34.080 に答える