如何将输入与数组索引匹配?

时间:2012-11-08 05:13:44

标签: c

对于这个节目,我想从用户那里获得一个电视频道的输入,这将是

int tv[] = {2, 4, 5, 6, 8};

我想提示用户输入他们想要的电视频道,scanf为电视频道4,即数组index [1]。如何将扫描的电视频道(4)与一个等于数组索引[1]的新变量相匹配?

5 个答案:

答案 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

这将占用额外的空间,但可以为您提供性能提升