-1
我寫一個程序,它需要從用戶的整條生產線的輸入沒有工作, 然後解析整數到一個數組中,並最終計算出的平均值和最接近值平均。在if語句C型雙比預期
我運行Windows 10,開發的C++ IDE和編譯TDM-GCC 4.9.2 64位
我讀雙比較是C中的問題,所以我使用的isless()函數用於更精確。 不過由於某些原因,比較不執行,因爲它應該。 這是我到目前爲止的代碼:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<float.h>
int main(){
char string[250];
//Prompt user to input sequence of integers
printf("Please enter the integer values: ");
//Read whole line from input
fgets (string, 250, stdin);
//Remove non-numeric characters from sequence and replace them with ' ' (space)
int j;
for(j=0; j<strlen(string); j++)
{
if(!isdigit(string[j]))
string[j] = ' ';
}
char *token;
char *rest = string;
int array[50]={0};
int i=0;
//Break string into Sub-tokens with ' ' as delimiter
// and parse them into an int array
while((token = strtok_r(rest, " ", &rest)))
{
array[i]=atoi(token);
i++;
}
double average,counter,sum;
i=0;
counter=0;
sum=0;
//Calculate the average
while(array[i]!=0)
{
sum=sum+array[i];
counter++;
i++;
}
average=sum/counter;
//printf("Counter %lf",counter);
//printf("sum %lf", sum);
printf("Average : %lf\n",average);
int index=0;
i=0;
double difference;
while(array[i]!=0)
{
if (i==0)
{
difference=fabs(fabs(array[0])-fabs(average));
}
if(isless((fabs(array[i])-fabs(average)),difference))
{
index=i;
}
printf("index %i difference %lf \n", index, fabs(fabs(array[i])-fabs(average)));
printf("i value %i \n",i);
i++;
}
printf("Closest element : %i\n", array[index]);
return 0;
}
有另一種方式來比較比isless功能以外的2個值? 該程序的測試運行給出以下輸出: Test Output
請讓我知道是否存在另一種方法來做比較在最後如果。
你是對的!我試圖更新差異,現在按預期工作!感謝您的幫助! –