gpt4 book ai didi

c - if 语句忽略零?

转载 作者:行者123 更新时间:2023-11-30 17:12:56 25 4
gpt4 key购买 nike

该程序读取两个文件并将它们存储在两个数组中。 array1 是数据,array2 是与其对应的类型。 ex array1: 183, 183, 182, 195.3, 187 array2: 1, 1, 1, 2, 2 将 array1 中的重复数字设置为 0,并将 array2 中的相应数字设置为零。例如: array1: 0, 0, 182, 195.3, 187 array2: 0, 0, 1, 2, 2 然后它应该忽略 for 循环中的零并计算所有相同类型数字的总和。例如:(出于某种原因称之为平均值)mean[2] = 195.3 + 187 它似乎忽略了至少一个大于 .5 的 if 语句,并在遇到零时转到 else 语句。有任何想法吗?

来自文件的示例数据(不是完整的数据),一旦它看到 182.6000061 彼此相邻,它就会将它们设置为零以及 array2 中的相应数字,但它会忽略其中一个 if 语句并转到 else 语句。输出为 2822.799、881.400、1997.8 等。其中第一个值应接近 6000。

将数据输入到array1:182.6000061183182.6000061182177.8000031183.3999939183180.6000061147.6000061166.6000061168182181.6000061164.1999969180.3999939177.3999939177.6000061182.6000061182.6000061181.6000061179.8000031160177.3999939181.3999939183.1999969183.1999969182.8000031181.3999939179.6000061182.1999969183.8000031176.8000031

将数据输入到数组2中:2912291229122912291229122912291229122912291229122912291229122912291229122912291229122912291229122912291229122912291229122912291229122912291229122912297929792979297929792979297929792979

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
FILE *fp;
float array1[1000] = {0}, array2[1000] = {0}, mean[1000] = {0}, average[1000] = {0}, counter[1000] = {0}, range[1000] = {0}, upper[1000] = {0}, lower[1000] = {0};
int a, h, i, r, j = 0, pos, found = 0, extrinsic[1000] = {0};
int b=0;
int linect = 1;
char buf[128];

i = 0;
j = 0;
fp = fopen("data.txt", "r");

if(fp == NULL)
{
puts("Cannot open file for reading");
scanf("%d", &a);
exit(EXIT_FAILURE);
}

while( linect < 1000 )
{
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%f", &array1[i]);
//printf("Set %d - 1st: %f\n", linect, array1[i]);
linect++;
i++;
}
fclose(fp);


linect = 0; //reads lot data file and puts it in array2
i = 0;
fp = fopen("lot_numbers.txt", "r");
if(fp == NULL)
{
puts("Cannot open file for reading");
scanf("%d", &a);
exit(EXIT_FAILURE);
}
while( linect < 1000 )
{
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%f", &array2[i]);
// printf("Set %d - 1st: %f\n", linect, array2[i]);
linect++;
i++;
}


for (i = 0; i < 999; i++) //searches array sets repeated points to zero
{
if (array1[i] == array1[i+1])
{
array1[i] = 0;
array2[i] = 0;
}
}
for (i = 0; i < 99; i++) //searches array
{
if (array2[i] > .5 && array2[i] < 50000)
{
if (array2[i] == array2[i+1])
{
if (array1[i] > .5 && array1[i] < 500){ //ignores zeros and junk data
mean[j] = mean[j] + array1[i];
counter[j]= counter[j] + 1;
}
}
else {
average[j] = mean[j]/counter[j];
range[j] = average[j] * 0.1;
upper[j] = average[j] + range[j];
lower[j] = average[j] - range[j];
j++;
}
}
}
j = 0;
while (j <10){
printf("\n%f", mean[j]);
j++;
}
scanf("%d", &a);

return 0;
}

最佳答案

为什么你的程序中有两个不同的循环?第一个循环 999 次,另一个循环 99 次。

for (i = 0; i < 999; i++)

for (i = 0; i < 99; i++)

关于c - if 语句忽略零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com