该计划的作用:
我正在制作一个程序,该程序显示用户输入了多少次号码。 如果输入的数字小于1,它将停止询问值。
我能够通过阵列“计数”的值初始化为100创建程序截图就是我所做的。
该程序的问题在于,它将只接受直到100的值。它将不接受超过100的值。如果输入了超过100个值,则为屏幕截图:屏幕数超过100
问题
这是我希望realloc()进入的地方。我希望根据最高输入值更改malloc()的大小,以便使用realloc()更加灵活。
但是,这样做会破坏程序。
请帮我。
我的程序
#include
#include
#include
#include
main()
{
//DECLARATION OF VARIABLES
int i, j, k, highestValue=1, size=1;
int* input = (int*)calloc(size, sizeof(int));
int* count = (int*)calloc(highestValue, sizeof(int));
bool iCondition = true;
//USER INPUT
for (i=0; iCondition==true; i++)
{
//GETS USER INPUT
printf("Enter a number: ");
scanf("%d", &input[i]);
//CHECKS IF THE NUMBER ENTERED IS A HIGH NUMBER
if (highestValue
highestValue = input[i];
count = realloc(count, highestValue * sizeof(int));
}
//CHECKS HOW MANY TIMES THE NUMBER HAS BEEN ENTERED
bool jCondition = true;
for(j=0; jCondition==true; j++)
{
if (input[i] == j){
count[j-1]++;
jCondition=false;
}
}
//ENDS THE LOOP IF THE ENTERED NUMBER IS LESS THAN 1
if(input[i] < 1)
iCondition = false;
//IF NOT, THIS WILL REALLOCATE/CHANGE ARRAY SIZE BY ADDING +1!!
else{
size++;
input = realloc(input, size * sizeof(int));
}
}
//PRINTS OUTPUT | USES THE HIGHESTVALUE AS THE CONDITIONAL EXPRESSION FOR FLEXIBILITY
for (i=0; i<=highestValue; i++)
{
//PRINTS ALL NUMBER THAT IS NOT EQUAL TO ZERO(0)
if (count[i] != 0)
printf("\n %d was entered %d time/s ", i+1, count[i]);
}
getch();
}