Пожалуйста, подскажите где ошибка! - C (СИ)
Формулировка задачи:
Делал программу которая выводит значения функции на интервале... Но она работает не правильно и бесконечно выдает одно и то же значение. Прошу, помогите разобраться где ошибся... язык С
#include <stdio.h>
int main()
{
float a, b, c, x, d, e, f, Xmin, Xmax, dx;
printf("vvedite shag dx");
scanf("%f", &dx);
printf("Vvedite Xmin");
scanf("%f", &Xmin);
printf("Vvedite Xmax");
scanf("%f", &Xmax);
printf("vvedite a");
scanf("%f", &a);
printf("vvedite b");
scanf("%f", &b);
printf("vvedite c");
scanf("%f", &c);
for (x=Xmin; x<=Xmax; dx)
{
if (x < 0 && b != 0)
{
d = x*x*x;
e = x*x;
f = a*d+b*e;
printf("znachenie ravno%f\n", f);
}
else
if (x > 0 && b == 0)
{
if ((x-c)==0)
{
printf("Nelzya tak pisat a to rabotat ne budet");
}
f= (x-a)/(x-c);
printf("znachenie ravno%f\n", f);
}
else
{
if ( c == 0 )
{
printf("Nelzya c=0");
}
if (x==10)
{
printf("Nelzya x=10");
}
f=(x+5)/(c*(x-10));
printf ("znachenie ravno%f\n", f);
}
}
}
не знаю как редактировать тему, но частично изменил код, т.к. понял что чать неправильна. Но всё ранво та же проблема:
#include <stdio.h>
int main()
{
float a, b, c, x, d, e, f, Xmin, Xmax, dx;
printf("vvedite shag dx");
scanf("%f", &dx);
printf("Vvedite Xmin");
scanf("%f", &Xmin);
printf("Vvedite Xmax");
scanf("%f", &Xmax);
printf("vvedite a");
scanf("%f", &a);
printf("vvedite b");
scanf("%f", &b);
printf("vvedite c");
scanf("%f", &c);
for (x=Xmin; x<=Xmax; dx)
{
if (x < 0 && b != 0)
{
d = x*x*x;
e = x*x;
f = a*d+b*e;
}
else
if (x > 0 && b == 0)
{
if ((x-c)==0)
{
continue;
}
f= (x-a)/(x-c);
}
else
{
if ( c == 0 )
{
continue;
}
if (x==10)
{
continue;
}
f=(x+5)/(c*(x-10));
}
printf ("znachenie ravno%f\n", f);
}
}Решение задачи: «Пожалуйста, подскажите где ошибка!»
textual
Листинг программы
#include <stdio.h>
int main()
{
float a, b, c, x, d, e, f, Xmin, Xmax, dx;
printf("vvedite shag dx");
scanf("%f", &dx);
printf("Vvedite Xmin");
scanf("%f", &Xmin);
printf("Vvedite Xmax");
scanf("%f", &Xmax);
printf("vvedite a");
scanf("%f", &a);
printf("vvedite b");
scanf("%f", &b);
printf("vvedite c");
scanf("%f", &c);
for (x=Xmin; x<=Xmax; x=x+dx)
{
if (x < 0 && b)
{ d = x*x*x; e = x*x;f = a*d+b*e; }
else
if (x > 0 && b == 0)
{
if ((x-c)==0) continue;
f= (x-a)/(x-c);
}
else
{
if ( c == 0 ) continue;
if (x==10) continue;
f=(x+5)/(c*(x-10));
}
printf ("[x]=%f ,znachenie ravno%f\n", x, f);
}
}
Объяснение кода листинга программы
- В программе объявлены следующие переменные: float a, b, c, x, d, e, f, Xmin, Xmax, dx;
- Пользователю предлагается ввести значение dx с помощью функции scanf.
- Затем пользователю предлагается ввести значения Xmin, Xmax и a с помощью функции scanf.
- Значение b вводится пользователем с помощью функции scanf.
- Значение c вводится пользователем с помощью функции scanf.
- Запускается цикл for, который выполняет вычисления для каждого значения x от Xmin до Xmax с шагом dx.
- Внутри цикла проверяется, является ли x отрицательным и равно ли b единице. Если это так, то выполняется блок кода, который вычисляет значения d и e, используя формулы xxx и xx соответственно, и присваивает f значение ad+b*e.
- Если x больше нуля и b равно нулю, то выполняется блок кода, который проверяет, равно ли (x-c) нулю. Если это так, то цикл продолжает работу со следующего шага, иначе вычисляется значение f как (x+5)/(c*(x-10)).
- Если x меньше или равно нулю и b не равно единице, то выполняется блок кода, который вычисляет значение f как (x+5)/(c*(x-10)).
- В конце цикла выводится значение x и f.
- Программа завершается.