ユーザーが入力したテキスト ファイルを取得し、最大数、最小数、数値の平均、および数値の標準偏差を返すプログラムを作成しようとしています。入力したテキスト ファイルは次のようにフォーマットされています (最初の数字は「N」、つまり数字の総数、2 行目はすべての数字のリストです)。
5
4.34 23.4 18.92 -78.3 17.9
これまでのところ、これは私のコードです
int main(int argc, char*argv[])
{
double average, num = 0, min = 0, max = 0, sum = 0, N, std_dev, sum_sqs;
FILE * pFile;
pFile = fopen("argv[1]", "r");
fscanf(pFile, "%lf", &N);
while(!feof(pFile))
{
fscanf(pFile, "%d", &num);
if (num < min)
min = num;
if (num > max)
max = num;
sum += num;
sum_sqs += (num*num);
}
average = sum/N;
std_dev = sqrt((sum_sqs/N)-(average*average));
printf("Smallest: %.2lf\n", min);
printf("Largest: %.2lf\n", max);
printf("Average: %.2lf\n)", average);
printf("Standard deviation: %.3lf\n", std_dev);
return(0);
}
現在、コンパイラは sqrt への未定義の参照に関するエラーを回避できず、何が問題なのかわかりません。時間を割いて回答してくださったすべての方々に、事前に感謝します! 私は本当に助けに感謝します.私はまだCのコツをつかんでいます.私のコードが意図したとおりに動作しない場合は、遠慮なく修正してください!
面倒な部分を以下に更新しました。ハハ pFile = fopen(argv[1], "r"); fscanf(pFile, "%lf", &N);
if (fscanf(pFile, "%lf", &N) == 1)
{
for (int i = 0; i < N; i++)
{
if (fscanf(pFile, "%lf", &num) == 1)
if (num < min)
min = num;
if (num > max)
max = num;
sum += num;
sum_sqs += (num*num);
}
average = sum/N;
std_dev = sqrt((sum_sqs/N)-(average*average));