Пожалуйста, подскажите где ошибка! - 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.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д