2016-04-23 5 views
0

プログラミング(C言語)で宿題をしていましたが、苦労しても解決できない問題に遭遇しました。C言語の構造体のユニークなメンバーをコピーする方法

私は特定の問題について尋ねる前に、私が与えられているものをお見せしたい:最初のプレーンテキストファイル(F1)で

は、すべてのデータでの映画のタイトルを格納しています。 2番目のプレーンテキストファイル(F2) - 普通のユーザーと映画評論家によって、映画のレビュー、 がファイルF1にリストされています。各映画は、 のムービー評論家と通常の ユーザーの数に制限はありません。同じ人物が複数の映画の監督になることがあります。 また、すべての評論家/ユーザーは、いくつかの映画の評価に参加することができます。

・すべての批評家(映画評論家と普通の ユーザー)、評価した映画の数と平均マークを画面に表示します。 を批評家に(最高から最低まで)マークの数でソートします。

ので、レビューの私の構造は次のようになります。

struct Review{ 
char ID[20]; 
char MovieID[20]; 
char FamilyName[20]; 
char Critic; 
double Mark; 


}; 

私は動的なメモリ割り当てと構造体の配列を作成しました。私が必要とするのは、FamilyNameによるレビューの一意の作家をそれぞれ特定し、評価した映画の数(レビューでFamilyNameが何回発生するか)とそれらがすべての映画に与えた平均マークを計算することです。

私はUserの新しい構造を作成することを考えていましたが、Familyname、評価された映画の数、AverageMarkの3人のメンバーすべてが含まれます。しかし、私はアルゴリズムがReview []からUser []に一意の値だけをコピーするとは思えません... 私はそれを行った後、ソートは問題にならないでしょう。

ありがとう、

答えて

0

このタスクはデータベース設計に関するものです。使用する例の構造体のレイアウトは次のとおりです。

struct Movie { 
    int ID; 
    char MovieName[20]; 
    int DirectorId; /* lookup in Person */ 
}; 

struct Person { 
    int Id; 
    char Surname[20]; 
    char Firstname[20]; 
    /* numbers of reviews, movies directed etc, can be calculated, and should not be stored to disk */ 
    int NumberOfReviews; 
    int SumMarks; /* AverageMark = SumMarks/NumberOfReviews */ 
}; 

struct Review { 
    int Id; 
    int MovieId; 
    int AuthorId; /* Lookup in person */ 
    int Mark; 
}; 

次はあなたがディスクやレポートをプリントアウトからデータをロードするためのルーチンを作る、これらの配列またはリンクされたリストを作成する必要があります。

+0

はい、私はこれらのような構造を持っていますが、レビューとムービーはtxtファイルから読み込まれて保存されています。本当に必要なのはレビューを使用してPerson構造を埋め込むことです。私は重複したコンテンツや重複した著者のないレビューから人へのせずに、あるアレイから別のアレイへデータをコピーして処理する方法の一般的なアルゴリズムを求めています。ご回答有難うございます。 –

+0

txtファイルから1行と1行を読み込みます。ファイルに各レコードの人物の名前が含まれている場合は、その人物がすでにメモリ内に存在するかどうかを確認し、存在する場合は同じIDを再利用し、人を追加して新しいユニークIDを使用します。 –

関連する問題