对于这个节目,我想从用户那里获得一个电视频道的输入,这将是
int tv[] = {2, 4, 5, 6, 8};
我想提示用户输入他们想要的电视频道,scanf
为电视频道4,即数组index [1]
。如何将扫描的电视频道(4)与一个等于数组索引[1]的新变量相匹配?
答案 0 :(得分:2)
从用户那里读取频道编号,并循环浏览数组以找到频道编号所在的位置。
答案 1 :(得分: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;
}
}
答案 2 :(得分:1)
我认为问题是一个简单的搜索案例。如果通道不正常,您可以进行线性搜索,或者使用二进制搜索逻辑来查找通道。如果你不想要那么,那么使用哈希概念。但这会增加数组的大小,但它有助于你很容易地找到该元素。
希望能回答你的问题......
答案 3 :(得分:1)
更简单的方法是使用一些searching algorithm搜索数组。如果您的数组是 HUGE ,那么您可能需要查看名为map的c ++容器。如果您创建了地图,那么您可以执行O(1)中提到的关联。
答案 4 :(得分:0)
每次在数组中搜索都可能很昂贵(在我看来,如果你有一个大型数组)另一个解决方案可能是你可以有另一个数组,它会将你映射到正确的索引
例如,
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
这将占用额外的空间,但可以为您提供性能提升