このプログラムでは、テレビチャンネルのユーザーからの入力を取得したいと思います。
int tv[] = {2, 4, 5, 6, 8};
そして、私はユーザーに彼らが望むテレビチャンネルを入力するように促したいのでscanf
、テレビチャンネル4は配列になりindex [1]
ます。スキャンしたテレビチャンネル(4)を、[1]の配列インデックスに等しい新しい変数に一致させるにはどうすればよいですか?
このプログラムでは、テレビチャンネルのユーザーからの入力を取得したいと思います。
int tv[] = {2, 4, 5, 6, 8};
そして、私はユーザーに彼らが望むテレビチャンネルを入力するように促したいのでscanf
、テレビチャンネル4は配列になりindex [1]
ます。スキャンしたテレビチャンネル(4)を、[1]の配列インデックスに等しい新しい変数に一致させるにはどうすればよいですか?
ユーザーからチャネル番号を読み取り、配列をループして、そのチャネル番号がある場所を見つけます。
単純な線形検索を実行します。ここでは、要素(ここではチャネル番号)が配列内で順番に検索されます
int channelnumber,arrayindex;
printf("\n Enter the channel number");
scanf("%d",&channelnumber)
for(i=0;i<5;i++)
{
if(tv[i]==channelnumber)
{
arrayindex=i;
break;
}
}
質問は検索の単純なケースだと思います。チャネルが順番どおりでない場合は、おそらく線形検索を実行できます。そうでない場合は、バイナリ検索ロジックを使用してチャネルを見つけることができます。どちらも望まない場合は、ハッシュの概念を利用してください。しかし、それは配列のサイズを大きくしますが、要素を非常に簡単に見つけるのに役立ちます.
あなたの質問に答えてくれることを願っています.....
配列で毎回検索すると費用がかかる可能性があります(私の意見では、大きな配列がある場合)別の解決策は、正しいインデックスにマップする別の配列を持つことができることです
例えば、
int tv[] = {2, 4, 5, 6, 8};
int mapping[]={-1,-1,0,-1,1,2,3,-1,-1,4};
tv[mapping[channelNumber]]//getting the actual value
これには追加のスペースが必要ですが、パフォーマンスを向上させることができます