私は、400 以上の映画 (リンクされたリストを使用してリンクされている) をタイトル、ジャンル、年、評価、主演俳優などで検索するプログラムの作成を任されています。
ただし、問題があります。リンクされたリストを介して検索を実行するために許可されている検索機能は 1 つだけです。また、その検索関数内で許可される while ループは 1 つだけです。
while (moviePtr != NULL)
明らかに、俳優検索やジャンル検索の場合は、さまざまなインスタンスになります。俳優、ジャンル、レーティング、年、サブジャンル、助演俳優の場合、見つかったすべてのインスタンスを出力する必要があります。(たとえば、Kevin Bacon が x-men とノートブックにいた場合、それらの 1 つだけでなく両方を出力する必要があります (画面ではなく出力ファイルに))。
私たちが与えられたこれらの制限に完全に困惑していることに気づきました. 検索関数はさまざまなデータ型をどのように処理しますか? (年と評価は整数として宣言する必要があります)。私が探しているものを正確に知るにはどうすればよいですか?俳優を検索している場合、タイトルも検索したくありません。
開始方法と開始方法に関する提案は非常に高く評価されます。
編集:こんにちは、私が何をしたかについてあなたたちを更新したと思ったすべてのID。私は3つの異なる検索機能を持っています。1 つは数値 (年と評価)、1 つはジャンルと俳優、最後に 1 つはタイトルです。
3つすべてのコードは次のとおりです。まずはタイトル探し。
void TitleSearched(MovieNode*head,
string titleSearched,
ofstream& outFile)
{
MovieNode* moviePtr;
bool found;
moviePtr = head;
found = false;
while (moviePtr !=NULL & !found)
{
if (moviePtr-> title == titleSearched)
{
found = true;
}
else
{
moviePtr = moviePtr -> next;
}
}
if (found)
{
cout << endl << titleSearched << " has been found!\n";
TitleOutput (moviePtr,outFile);
}
else
{
cout << endl << titleSearched << " was not found.\n";
}
}
今、年/評価検索。
int NumSearched(MovieNode* head, int numSearched)
{
int instances;
MovieNode* moviePtr;
ofstream outFile;
moviePtr = head;
instances = 0;
while (moviePtr !=NULL)
{
if (moviePtr-> year == numSearched)
{
instances = instances +1;
NumOutList(moviePtr,outFile,"year",numSearched,instances);
moviePtr = moviePtr -> next;
}
else if (moviePtr->rating == numSearched)
{
instances = instances +1;
NumOutList(moviePtr,outFile,"rating",numSearched,instances);
moviePtr = moviePtr -> next;
}
else
{
moviePtr = moviePtr ->next;
}
}
return instances;
}
最後にジャンル/俳優検索。
int ItemSearch (MovieNode* head,string itemSearched, ofstream& outFile)
{
int instances;
MovieNode* moviePtr;
moviePtr = head;
instances = 0;
while (moviePtr !=NULL)
{
if (moviePtr-> genre == itemSearched || moviePtr ->subGenre == itemSearched)
{
instances = instances +1;
OutList(moviePtr,outFile,"Genre",itemSearched,instances);
moviePtr = moviePtr -> next;
}
else if (moviePtr->leadActor == itemSearched || moviePtr->supportActor == itemSearched)
{
instances = instances +1;
OutList(moviePtr,outFile,"Actor",itemSearched,instances);
moviePtr = moviePtr -> next;
}
else
{
moviePtr = moviePtr ->next;
}
}
return instances;
}
私の仕事が何であるかを皆さんに思い出させたかったのです。1. これら 3 つの検索関数を 1 つに結合する 2. 検索で while ループを 1 つだけ持つ 3. 特定の関数で返されるのは 1 つだけです (ただし、これを結合すると void 関数になると仮定します)
私の主な問題は、int と文字列です。評価または年を文字列として宣言することは許可されていません。そして、一般的に3つすべてを組み合わせたコードの形式だけで頭が痛くなります