查找元素在c中重复的次数

时间:2014-12-02 13:59:30

标签: c arrays

我有一项研究,它必须打印一个数组中的所有数字然后重复多少次。

int lottery(int a,int b,int c,int d,int e,int f,int i,int count)
{
    printf("Enter the loop count:");
    scanf("%d",&d);
    a=time(NULL);
    srand(a);
    int genel[100][100];
    int hepsi[50]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49};
    count=0;
    for(e=0;e<=d-1;e++)
    {
       for(b=0;b<=5;b++)
        {
           genel[e][b]=(rand()%49+1);
           while(i>=0 && i<=49)
                {
                  if(genel[e][b]==hepsi[i])
                    {
                        count=count+1;
                    }
                else{
                        count=count;
                    }

                }
           printf("%d->%d\t",genel[e][b],count);
        }
    }

}

这显然不起作用。输出必须是这样的 1 - > 0 2 - > 3 3 - > 15等

TY为您提供帮助,欢呼:)

1 个答案:

答案 0 :(得分:1)

了解自己在做什么非常重要,因此命名非常重要。如果你知道你在做什么,嵌套循环是可以的。一种更容易理解的方法是:

void lottery() {
    int i, j                  //forloop counters
    int randArray[100][100];  //array for random values

    srand(Time(NULL));        //set random seed based on system time

    //set random values
    for(i = 0; i < 100; i++) {
        for(j = 0; j < 100; j++) {
            randArray[i][j] = rand()%49 + 1; //sets random ranging from 1 to 49 (49 incl)
        }
    }

    //here you can start the counting procedure, which I won't spoil but ill give some hints below

}

有一些选择,首先是简单的懒惰方法: 在所有值上使用循环,&#39; int number&#39;从1到49,在forloop里面使用两个forloops来搜索整个数组,每当你遇到值&#39;数字时就递增int x。在搜索整个数组后,您可以使用printf(&#34;%d - &gt;%d&#34;,number,x);要打印该值,请将x设置为零并计算另一个数字。

另一种方法是你试过的, 创建一个数组,每个数字都有一个可以递增计数器的位置。现在使用两个for循环遍历整个数组,增加对应于你在randArray [i] [j]中找到的值的arraylocation。然后使用另一个forloop打印带有计数的数组。

我建议您尝试清理代码和方法,再试一次,然后再遇到遇到的问题。祝你好运!

抱歉,如果这对你没有帮助,我试图破坏不要太多,因为根据我自己的经验,编程应该通过犯错来学习。