2

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

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

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

4

5 回答 5

2

从用户那里读取频道号,并循环遍历数组以找到该频道号所在的位置。

于 2012-11-08T05:21:31.213 回答
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;
     }
}
于 2012-11-08T05:24:52.767 回答
1

我相信这个问题是一个简单的搜索案例。如果通道不按顺序排列,您可能可以进行线性搜索,或者使用二进制搜索逻辑来查找通道。如果您也不想这样,请使用散列概念。但这会增加数组的大小,但它可以帮助您非常轻松地找到元素。

希望能回答你的问题......

于 2012-11-08T05:28:10.313 回答
1

更简单的方法是通过使用某种搜索算法来搜索数组。如果您的数组是HUGE,那么您可能需要查看一个名为map的 c++ 容器。如果你创建一个地图,那么你可以做你在 O(1) 中提到的关联。

于 2012-11-08T05:49:19.843 回答
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

这会占用更多空间,但可以提高性能

于 2012-11-08T05:54:50.850 回答