0

構造体型から 2 つの値を取得して比較する関数を作成するように求められました。それらが等しい場合、それらの構造から他の 2 つの値を追加し、これを別の構造に送信するよう求めています。また、関数名を介して 1 または 0 を返すことになっているため、関数を int として定義しました。

私は、従業員の社会保障番号とその賃金、そして別の従業員の ssn と賃金を取得するプログラムを作成しようとしました。ソーシャルが同じである場合、2 つの賃金を結合し、その従業員の合計賃金を含む別の構造に送信します。

関数比較について言及するたびにエラーが発生します。これは、関数の引数によるものと思われます。どうすればこれを適切に行うことができますか?

#include <stdio.h>
#include <stdlib.h>

#define EMPLOYEE_COUNT 4

struct ewage
{
       int ssn;
       int wage;
}

struct record
{
       int totalwage;
}

int compare(struct ewage s1, struct ewage s2, struct record *r);

int main (void)
{
    struct ewage e[EMPLOYEE_COUNT];
    struct record r[EMPLOYEE_COUNT];
    int i, j;
    for (i = 0; i < EMPLOYEE_COUNT; i ++)
    {
        for (j = i + 1; j < EMPLOYEE_COUNT; j ++)
        {
            int success = compare(e[i], e[j], &record[i]);
            if (success == 1)
                        printf ("%d / %d | Record: %d \n", i, j, record[i]);
            else
                        printf ("%d / %d | DOES NOT MATCH \n", i, j);
        }
    }

    system ("PAUSE");
    return 0;
}

int compare(struct ewage s1, struct ewage s2, struct record *r)
{
       if (s1.ssn == s2.ssn)
       {
                  r->totalwage = s1.wage + s2.wage;
                  return 1;
       }
       return 0;
}
4

2 に答える 2

0

構造体定義の後にセミコロンが必要です

struct ewage
{
       int ssn;
       int wage;
}; // here

struct record
{
       int totalwage;
}; // here

レコードは定義されていません。本当の名前は r だと思います

int success = compare(e[i], e[j], &r[i]); // here
if (success == 1)
    printf ("%d / %d | Record: %d \n", i, j, &r[i]); // here

最後に、最後の %d を印刷するものが必要です。ここでは総賃金を想定しています。

printf ("%d / %d | Record: %d \n", i, j, r[i].totalwage); // here

これで、デバッグを開始できます...

于 2013-11-09T00:37:01.857 に答える