Не работает цикл в программе на Си
Вводится 0.1 1 0.1 и любое большое число Должно выводится 10 раз все 3 значения
Цикл в функции mod1. Подскажите, плиз, почему выводит 1 раз
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define PI 3.1415
double a, b, h, x, y, s, mod;
int n;
void S()
{
s = 0.0;
for (int k = 1; k <= n; k++){
s += pow(-1, k) * cos(k * x) / pow(k, 2);
}
printf("%f\t", s);
}
void Y() {
y = 0.0;
y = 1. / 4. * (pow(x, 2) - pow(PI, 2) / 3);
printf("%f\t", y);
}
void mod1()
{
printf("Enter a,b,h i n:");
scanf_s("%f%f%f%d", &a, &b, &h, &n);
printf("\n");
printf("S(x):\t\tY(x):\t\t|S(x)-Y(x)|:\n");
for (x = a; x <= b; x += h)
{
S();
Y();
mod = fabs(s - y);
printf("%f\n", mod);
}
}
int main() {
//S();
//Y();
mod1();
}
Ответы (1 шт):
Каким компилятором вы пользуетесь? Например, VC++19 сразу при компиляции сообщил:
test.cpp(27): warning C4477: "scanf_s": в строке форматирования "%f" требуется аргумент типа "float *", но вариативный аргумент "1" имеет тип "double *"
test.cpp(27): note: рекомендуется использовать "%lf" в строке форматирования
И так три раза. Неужели ваш компилятор промолчал? :( У вас явное несоответствие типа, указанного в строке формата, и типа переменной, из-за этого вы получаете в переменных совсем не те значения, которые вводили. Приведите их в соответствие (или используйте float, или %lf), и эта ошибка исправится.