C, программа запускается но не выполняет правильно.
#2
Отправлено 12 октября 2006 - 21:35
а какое уравнение считается правилным?вот уравнение, компилируется, запускается но считает не правильно. Помогите найти где ошибка
#include <stdio.h>
int main(void)
{
int x;
int y;
printf("Type X");
scanf("%d", &x);
y = (x*x*x + sqrt(4 + x*x))/(x*x + 8*x + 1);
printf("%d", y);
getch();
return 0;
}
btw. sqrt в math.h, getch в conio.h
#8
Отправлено 12 октября 2006 - 23:33
лучше сделать x double, иначе правильными значениями будут только -2, -1, 0, 1, 2
#9
Отправлено 12 октября 2006 - 23:55
#include <math.h>
int main(void)
{
double x;
int y;
printf("Type X");
scanf("%d, &x");
y = (x*x*x - sqrt(4 - x*x))/(x*x + 8x + 1);
printf("%d, y");
getch();
return 0;
}
даже если вводить разные числа из области определения ( 1 и 2 ), то ответ один и тот же, что то не то
#12
Отправлено 13 октября 2006 - 11:53
как записать область определения ( что при таком то х нет решений) через while и if ?
как добавить чтобы x*H потом на H2 и так 15 раз, то есть чтоб в ответе выдало 15 разных y
Сообщение изменено: ValkVol (13 октября 2006 - 12:39 )
#15
Отправлено 13 октября 2006 - 14:00
вот правильная прога sqrtнаписал все степени через pow и все стало считать правильно.
#include <stdio.h> #include <math.h> int main(void) { double x; double y; printf("Type X:\n"); scanf("%lf", &x); y = (x*x*x - sqrt(4 - x*x)) / (x*x + 8*x + 1); printf("%lf", y); return 0; }ты считывал х как int а не double, потом присваивал int y значение double.
#16
Отправлено 13 октября 2006 - 19:38
#include <stdio.h> #include <math.h> double fnc(double x); int chk(double x); int main() { double A, H, YM, x, y; int i; int const N = 15; printf("Enter A (algvaartus) "); scanf("%lf", &A); printf("Enter YM (ylempiir) "); scanf("%lf", &YM); printf("Enter H (samm) "); scanf("%lf", &H); for (i = 0; i < N; i++) { x = A + i*H; if (chk(x)) { y = fnc(x); if (y - YM > 0.1e-20) printf("x = %lf\t|\t%s", x, "yletab YM-piiri"); else printf("x = %lf\t|\ty = %lf", x, y); } else printf("x = %lf\t|\t%s", x, "puudub"); putchar('\n'); } return 0; } double fnc(double x) { return (x*x*x - sqrt(4.0f - x*x)) / (x*x + 8.0f*x + 1.0f); } int chk(double x) { if (x + 2.0 > -0.1e-20 && x - 2.0f < 0.1e-20 && !(fabs(x - (-4.0f + sqrt(15.0f))) < 0.1e-20) ) return 1; return 0; }