我正在尝试创建一个能够计算拉格朗日多项式的程序,但我遇到了可能是一个微不足道的问题。我给出了一些x和y值,我应该用它来近似某个其他x的函数。变量<textarea disabled="true" style="border: none;background-color:white;">
<script>
alert('test');
</script>
</textarea>
指的是我给出的x和y值对的数量。
我无法在x值的第一次迭代中读取,并且它直接跳过读取y值。即它只是打印x(0)然后y(0)而不让我输入x(0)的任何内容。对于第一个循环之后的任何循环,这不是问题。任何帮助,将不胜感激。
nodes
答案 0 :(得分:8)
如评论中所述:
您将
System.Drawing
与%d
一起使用,而不是appx
。%f
在小数点停止读取,%d
输入从&nodex[0]
停止 - 小数点处继续。当然,%d
中的值也是垃圾。您应该从
appx
测试返回值;你展示的每个电话都应该是1。您应该打印读取的值,这样您就知道读取的内容符合您的预期。
一些固定代码:
scanf()
我假设您支持C99。如果没有,您需要在循环外声明#include <stdio.h>
#include <stdlib.h>
#define SIZE 40
static void err_exit(const char *msg)
{
fprintf(stderr, "%s\n", msg);
exit(EXIT_FAILURE);
}
int main(void)
{
// Defining variables and arrays
int nodes;
float nodex[SIZE], nodey[SIZE], appx;
// Find how many nodes there are
printf("How many nodes are being referenced?: ");
fflush(stdout);
if (scanf("%d", &nodes) != 1)
err_exit("failed to read number of nodes");
if (nodes < 3 || nodes > SIZE)
err_exit("number of nodes not in range 0..40");
// Find what number we are approximating for x
printf("For what value of x are we approximating?: ");
fflush(stdout);
if (scanf("%f", &appx) != 1)
err_exit("failed to read value");
for (int i = 0; i < nodes; i++)
{
printf("Enter x(%d): ", i);
fflush(stdout);
if (scanf("%f", &nodex[i]) != 1)
err_exit("failed to read x-value");
printf("Enter y(%d): ", i);
fflush(stdout);
if (scanf("%f", &nodey[i]) != 1)
err_exit("failed to read y-value");
}
printf("Approximating: %g\n", appx);
printf("%d nodes:\n", nodes);
for (int i = 0; i < nodes; i++)
printf("%2d (%g,%g)\n", i, nodex[i], nodey[i]);
return 0;
}
并使用int i;
作为循环。
<强>汇编:强>
for (i = 0; i < nodes; i++)
示例运行
gcc -O3 -g -std=c11 -Wall -Wextra -Werror -Wmissing-prototypes -Wstrict-prototypes \
read-float-83.c -o read-float-83