问题:我试图在随机整数数组中找到最频繁的六个数字,但是我只找到循环计数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Salih Atacan Karagöz 210201055
int main()
{
long x=210201055; //password
long y=0;
printf("Enter password:");
scanf("%d",&y);
if(x==y) //password check if statement is true progrom continues
{
int tekrar[49]= {0}; //array for counting repeating numbers
int numbers[49]= {0}; //array for creating random numbers
int z; //integer for loop counter
int counter=0; //counter for loop
int i;
int j=0;
int high=0;
printf("Enter loop count:");
scanf("%d",&z);
srand(time(NULL));
for(counter=1; counter<=z; counter++) //loop will do under these lines z times
{
i=0;
while(i<6) //every time we need 6 random numbers so loop need to create max 6 numbers (0,1,2,3,4,5,)
{
i++;
numbers[i]=rand()%50+1; //+1 for prevent creating zeros mod 49 for creating numbers below 49
tekrar[numbers[i]]++; //array +1 t its value every time same number comes
}
}
for(i=1; i<=49; i++)
{
printf("%d->%d\t",i,tekrar[i]); //for printing created numbers
}
printf("\n -----------\tMost Frequent Six Numbers\t-------------\n");
printf(":(");
int count;
int maxCount = 0;
int maxValue = 0;
for(j=0;j<9;j++){
count=0;
for(i=0; i<49; i++){
if (numbers[i]==numbers[i+1]){
count++;
}
if(count>maxCount){
maxCount==count;
}
}
maxValue=numbers[i];
}
printf("Number: %d", maxValue);
printf("\n-----------GUESS-----------\n"); //we will use bouble sort here
printf(":(");
}
else //if password is wrong program continues from here
{
printf("Wrong Password");
}
}
最佳答案
这应该为您工作:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 50
int main() {
//Access
int numbers[SIZE+1], randomNumbers, count, innerCount;
int pcPassword = 2, userPassword = 0, frequentNumber[6], frequentNumberCount[6];
printf("Enter password:");
scanf("%d", &userPassword);
if(pcPassword != userPassword) {
printf("Wrong Password");
exit(0);
}
printf("How many random Numbers do you want:\n>");
scanf(" %d", &randomNumbers);
//initlaized
for(count = 0; count <= SIZE; count++)
numbers[count] = 0;
//Random Numbers
srand(time(NULL));
for(count = 0; count < randomNumbers; count++)
numbers[rand() % 50 + 1]++;
//Print
for(count = 1; count <= SIZE; count++) {
if((count-1) % 6 == 0)
printf("\n");
printf("%4d -> %3d", count, numbers[count]);
}
//initlaized
for(count = 0; count < 6; count++) {
frequentNumber[count] = 0;
frequentNumberCount[count] = 0;
}
//Get frequent numbers
for(count = 1; count <= SIZE; count++) {
for(innerCount = 0; innerCount < 6; innerCount++) {
if(numbers[count] > frequentNumberCount[innerCount]) {
if(innerCount+1 <= 5)
frequentNumber[innerCount+1] = frequentNumber[innerCount];
frequentNumber[innerCount] = count;
frequentNumberCount[innerCount] = numbers[count];
break;
}
}
}
//Print
printf("\n\nThe 6 most frequent numbers are:\n");
for(count = 0; count < 6; count++)
printf("%d. -> Number: %3d Count: %3d\n", count+1, frequentNumber[count], frequentNumberCount[count]);
return 0;
}
输入:
2 //Password
1200 //Random Numbers
输出:
Enter password:2
How many random Numbers do you want:
>1200
1 -> 23 2 -> 21 3 -> 24 4 -> 24 5 -> 25 6 -> 28
7 -> 22 8 -> 22 9 -> 25 10 -> 27 11 -> 27 12 -> 20
13 -> 14 14 -> 29 15 -> 28 16 -> 20 17 -> 22 18 -> 20
19 -> 29 20 -> 25 21 -> 35 22 -> 21 23 -> 24 24 -> 23
25 -> 21 26 -> 24 27 -> 12 28 -> 33 29 -> 23 30 -> 17
31 -> 33 32 -> 21 33 -> 24 34 -> 23 35 -> 33 36 -> 21
37 -> 22 38 -> 28 39 -> 30 40 -> 18 41 -> 16 42 -> 29
43 -> 24 44 -> 29 45 -> 30 46 -> 20 47 -> 19 48 -> 26
49 -> 18 50 -> 28
The 6 most frequent numbers are:
1. -> Number: 21 Count: 35
2. -> Number: 28 Count: 33
3. -> Number: 31 Count: 33
4. -> Number: 35 Count: 33
5. -> Number: 39 Count: 30
6. -> Number: 45 Count: 30