如何规范化数据和清除数组
How to normalize data and clear array
你好,我写了一个小程序,让我从菜单中选择我想做的事情,即查看、输入值、计算等。它完成了我要求它做的大部分事情,所以我在正确的轨道上.但是,有几件事我不知道如何解决。
当我输入值并退出时。当我重新输入时,它再次从 0 开始,好像一切都被清除了。我想从我离开的地方开始。第二。我想将 MAX 10 个值作为输入。应该是进不去了吧。我想改用我的函数擦除数组。
我正在尝试计算标准化值,但程序每次都退出。
#include <stdio.h>
#define LENGTH 10
int enterMeasurements();
void printArray();
int minValue();
int maxValue();
float avgValue();
void normValue();
int main(void)
{
char input;
int nrMeasurements=0;
int arrayTable[LENGTH] = {0};
int normTable[LENGTH] = {0};
int max, min, norm;
float avg;
//main menu
do
{
printf("\nMeasurement tool 1.0\n");
printf("V for (View)\n");
printf("E for (Enter Values)\n");
printf("C for (Compute Values)\n");
printf("R for (Reset Values)\n");
printf("Q for (Quit)\n");
printf("\nEnter input: ");
scanf(" %c", &input);
if(input == 'v' || input == 'V')
{
// function to print array values
printArray(arrayTable, nrMeasurements);
}
else if(input == 'e' || input == 'E')
{
// enter values here
nrMeasurements = enterMeasurements(arrayTable,nrMeasurements);
}
else if (input == 'c' || input == 'C')
{
// enter function to calc min, max and avg and prints it.
max = maxValue(arrayTable, nrMeasurements);
min = minValue(arrayTable, nrMeasurements);
avg = avgValue(arrayTable, nrMeasurements);
printf("Maximum value is: %d\n", max);
printf("Minimum value is: %d\n", min);
printf("Average value is: %.2f\n", avg);
normValue(normTable, nrMeasurements);
}
else if (input == 'r' || input == 'R')
{
// enter function that erase the entire array.
printf("[ erase array ]\n");
}
}
while (input !='q' && input != 'Q');
return 0;
}
int enterMeasurements(int arrayTable[], int nrMeasurements)
{
int i;
for (i = 0; i < LENGTH; i++)
{
printf("Enter Measurement #%i (or 0): ", i+1);
scanf("%d", &arrayTable[i]);
if (arrayTable[i] == 0 )
break;
}
return i;
}
void printArray(int arrayTable[], int nrMeasurements)
{
int i;
for (i = 0; i < nrMeasurements; i++)
{
printf(" array[%2d] : %d\n", i, arrayTable[i]);
}
}
int maxValue(int arrayTable[], int nrMeasurements)
{
int i, max;
max = arrayTable[0];
for (i=1; i<nrMeasurements; i++)
{
if (arrayTable[i]>max)
{
max=arrayTable[i];
}
}
return(max);
}
int minValue(int arrayTable[], int nrMeasurements)
{
int i, min;
min = arrayTable[0];
for (i=1; i<nrMeasurements; i++)
{
if (arrayTable[i]<min)
{
min=arrayTable[i];
}
}
return(min);
}
float avgValue(int arrayTable[], int nrMeasurements)
{
int sum,i;
float avg;
sum=0;
avg=0;
for (i=0; i<nrMeasurements;i++)
{
sum=sum+arrayTable[i];
avg=(float)sum/(i+1);
}
return(avg);
}
void normValue(int min, int max, int avg, int arrayTable[], int nrMeasurements, int normTable[])
{
int i;
for (i=0; i<nrMeasurements; i++)
{
normTable[i]=(arrayTable[i]-min)/ (max-min);
}
for (i=0; i<10; i++)
printf("Normalized Values: %d\n", normTable[i]);
}
when i enter values and exit. When i re-enter it starts from 0 again, as if everything cleared.
发生这种情况是因为您总是在 enterMeasurements
中从 i = 0;
开始。您需要将其初始化为参数 nrMeasurements
.
im trying to compute normalized values but program quits everytime.
发生这种情况很可能是因为您没有向 normValue
传递足够的参数。
将调用更改为:
normValue(min, max, avg, arrayTable, nrMeasurements, normTable);
您应该更新函数声明以包含所有参数。这样可以避免上述错误。
int enterMeasurements(int arrayTable[], int nrMeasurements);
void printArray(int arrayTable[], int nrMeasurements);
int minValue(int arrayTable[], int nrMeasurements);
int maxValue(int arrayTable[], int nrMeasurements);
float avgValue(int arrayTable[], int nrMeasurements);
void normValue(int min, int max, int avg, int arrayTable[], int nrMeasurements, int normTable[]);
你好,我写了一个小程序,让我从菜单中选择我想做的事情,即查看、输入值、计算等。它完成了我要求它做的大部分事情,所以我在正确的轨道上.但是,有几件事我不知道如何解决。
当我输入值并退出时。当我重新输入时,它再次从 0 开始,好像一切都被清除了。我想从我离开的地方开始。第二。我想将 MAX 10 个值作为输入。应该是进不去了吧。我想改用我的函数擦除数组。
我正在尝试计算标准化值,但程序每次都退出。
#include <stdio.h>
#define LENGTH 10
int enterMeasurements();
void printArray();
int minValue();
int maxValue();
float avgValue();
void normValue();
int main(void)
{
char input;
int nrMeasurements=0;
int arrayTable[LENGTH] = {0};
int normTable[LENGTH] = {0};
int max, min, norm;
float avg;
//main menu
do
{
printf("\nMeasurement tool 1.0\n");
printf("V for (View)\n");
printf("E for (Enter Values)\n");
printf("C for (Compute Values)\n");
printf("R for (Reset Values)\n");
printf("Q for (Quit)\n");
printf("\nEnter input: ");
scanf(" %c", &input);
if(input == 'v' || input == 'V')
{
// function to print array values
printArray(arrayTable, nrMeasurements);
}
else if(input == 'e' || input == 'E')
{
// enter values here
nrMeasurements = enterMeasurements(arrayTable,nrMeasurements);
}
else if (input == 'c' || input == 'C')
{
// enter function to calc min, max and avg and prints it.
max = maxValue(arrayTable, nrMeasurements);
min = minValue(arrayTable, nrMeasurements);
avg = avgValue(arrayTable, nrMeasurements);
printf("Maximum value is: %d\n", max);
printf("Minimum value is: %d\n", min);
printf("Average value is: %.2f\n", avg);
normValue(normTable, nrMeasurements);
}
else if (input == 'r' || input == 'R')
{
// enter function that erase the entire array.
printf("[ erase array ]\n");
}
}
while (input !='q' && input != 'Q');
return 0;
}
int enterMeasurements(int arrayTable[], int nrMeasurements)
{
int i;
for (i = 0; i < LENGTH; i++)
{
printf("Enter Measurement #%i (or 0): ", i+1);
scanf("%d", &arrayTable[i]);
if (arrayTable[i] == 0 )
break;
}
return i;
}
void printArray(int arrayTable[], int nrMeasurements)
{
int i;
for (i = 0; i < nrMeasurements; i++)
{
printf(" array[%2d] : %d\n", i, arrayTable[i]);
}
}
int maxValue(int arrayTable[], int nrMeasurements)
{
int i, max;
max = arrayTable[0];
for (i=1; i<nrMeasurements; i++)
{
if (arrayTable[i]>max)
{
max=arrayTable[i];
}
}
return(max);
}
int minValue(int arrayTable[], int nrMeasurements)
{
int i, min;
min = arrayTable[0];
for (i=1; i<nrMeasurements; i++)
{
if (arrayTable[i]<min)
{
min=arrayTable[i];
}
}
return(min);
}
float avgValue(int arrayTable[], int nrMeasurements)
{
int sum,i;
float avg;
sum=0;
avg=0;
for (i=0; i<nrMeasurements;i++)
{
sum=sum+arrayTable[i];
avg=(float)sum/(i+1);
}
return(avg);
}
void normValue(int min, int max, int avg, int arrayTable[], int nrMeasurements, int normTable[])
{
int i;
for (i=0; i<nrMeasurements; i++)
{
normTable[i]=(arrayTable[i]-min)/ (max-min);
}
for (i=0; i<10; i++)
printf("Normalized Values: %d\n", normTable[i]);
}
when i enter values and exit. When i re-enter it starts from 0 again, as if everything cleared.
发生这种情况是因为您总是在 enterMeasurements
中从 i = 0;
开始。您需要将其初始化为参数 nrMeasurements
.
im trying to compute normalized values but program quits everytime.
发生这种情况很可能是因为您没有向 normValue
传递足够的参数。
将调用更改为:
normValue(min, max, avg, arrayTable, nrMeasurements, normTable);
您应该更新函数声明以包含所有参数。这样可以避免上述错误。
int enterMeasurements(int arrayTable[], int nrMeasurements);
void printArray(int arrayTable[], int nrMeasurements);
int minValue(int arrayTable[], int nrMeasurements);
int maxValue(int arrayTable[], int nrMeasurements);
float avgValue(int arrayTable[], int nrMeasurements);
void normValue(int min, int max, int avg, int arrayTable[], int nrMeasurements, int normTable[]);