Пожалуйста, подскажите где ошибка! - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Делал программу которая выводит значения функции на интервале... Но она работает не правильно и бесконечно выдает одно и то же значение. Прошу, помогите разобраться где ошибся... язык С
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. float a, b, c, x, d, e, f, Xmin, Xmax, dx;
  5. printf("vvedite shag dx");
  6. scanf("%f", &dx);
  7. printf("Vvedite Xmin");
  8. scanf("%f", &Xmin);
  9. printf("Vvedite Xmax");
  10. scanf("%f", &Xmax);
  11. printf("vvedite a");
  12. scanf("%f", &a);
  13. printf("vvedite b");
  14. scanf("%f", &b);
  15. printf("vvedite c");
  16. scanf("%f", &c);
  17. for (x=Xmin; x<=Xmax; dx)
  18. {
  19. if (x < 0 && b != 0)
  20. {
  21. d = x*x*x;
  22. e = x*x;
  23. f = a*d+b*e;
  24. printf("znachenie ravno%f\n", f);
  25. }
  26. else
  27. if (x > 0 && b == 0)
  28. {
  29. if ((x-c)==0)
  30. {
  31. printf("Nelzya tak pisat a to rabotat ne budet");
  32. }
  33. f= (x-a)/(x-c);
  34. printf("znachenie ravno%f\n", f);
  35. }
  36. else
  37. {
  38. if ( c == 0 )
  39. {
  40. printf("Nelzya c=0");
  41. }
  42. if (x==10)
  43. {
  44. printf("Nelzya x=10");
  45. }
  46. f=(x+5)/(c*(x-10));
  47. printf ("znachenie ravno%f\n", f);
  48. }
  49. }
  50. }
не знаю как редактировать тему, но частично изменил код, т.к. понял что чать неправильна. Но всё ранво та же проблема:
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. float a, b, c, x, d, e, f, Xmin, Xmax, dx;
  5. printf("vvedite shag dx");
  6. scanf("%f", &dx);
  7. printf("Vvedite Xmin");
  8. scanf("%f", &Xmin);
  9. printf("Vvedite Xmax");
  10. scanf("%f", &Xmax);
  11. printf("vvedite a");
  12. scanf("%f", &a);
  13. printf("vvedite b");
  14. scanf("%f", &b);
  15. printf("vvedite c");
  16. scanf("%f", &c);
  17. for (x=Xmin; x<=Xmax; dx)
  18. {
  19. if (x < 0 && b != 0)
  20. {
  21. d = x*x*x;
  22. e = x*x;
  23. f = a*d+b*e;
  24. }
  25. else
  26. if (x > 0 && b == 0)
  27. {
  28. if ((x-c)==0)
  29. {
  30. continue;
  31. }
  32. f= (x-a)/(x-c);
  33. }
  34. else
  35. {
  36. if ( c == 0 )
  37. {
  38. continue;
  39. }
  40. if (x==10)
  41. {
  42. continue;
  43. }
  44. f=(x+5)/(c*(x-10));
  45. }
  46. printf ("znachenie ravno%f\n", f);
  47. }
  48. }

Решение задачи: «Пожалуйста, подскажите где ошибка!»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     float a, b, c, x, d, e, f, Xmin, Xmax, dx;
  6.     printf("vvedite shag dx");
  7.     scanf("%f", &dx);
  8.     printf("Vvedite Xmin");
  9.     scanf("%f", &Xmin);
  10.     printf("Vvedite Xmax");
  11.     scanf("%f", &Xmax);
  12.     printf("vvedite a");
  13.     scanf("%f", &a);
  14.     printf("vvedite b");
  15.     scanf("%f", &b);
  16.     printf("vvedite c");
  17.     scanf("%f", &c);
  18.     for (x=Xmin; x<=Xmax; x=x+dx)
  19.         {
  20.         if (x < 0 && b)
  21.             { d = x*x*x; e = x*x;f = a*d+b*e; }
  22.         else
  23.             if (x > 0 && b == 0)
  24.         {
  25.         if ((x-c)==0) continue;
  26.         f= (x-a)/(x-c);
  27.         }
  28.         else
  29.         {
  30.         if ( c == 0 ) continue;
  31.         if (x==10) continue;
  32.     f=(x+5)/(c*(x-10));
  33.     }
  34. printf ("[x]=%f ,znachenie ravno%f\n", x, f);
  35. }
  36. }

Объяснение кода листинга программы

  1. В программе объявлены следующие переменные: float a, b, c, x, d, e, f, Xmin, Xmax, dx;
  2. Пользователю предлагается ввести значение dx с помощью функции scanf.
  3. Затем пользователю предлагается ввести значения Xmin, Xmax и a с помощью функции scanf.
  4. Значение b вводится пользователем с помощью функции scanf.
  5. Значение c вводится пользователем с помощью функции scanf.
  6. Запускается цикл for, который выполняет вычисления для каждого значения x от Xmin до Xmax с шагом dx.
  7. Внутри цикла проверяется, является ли x отрицательным и равно ли b единице. Если это так, то выполняется блок кода, который вычисляет значения d и e, используя формулы xxx и xx соответственно, и присваивает f значение ad+b*e.
  8. Если x больше нуля и b равно нулю, то выполняется блок кода, который проверяет, равно ли (x-c) нулю. Если это так, то цикл продолжает работу со следующего шага, иначе вычисляется значение f как (x+5)/(c*(x-10)).
  9. Если x меньше или равно нулю и b не равно единице, то выполняется блок кода, который вычисляет значение f как (x+5)/(c*(x-10)).
  10. В конце цикла выводится значение x и f.
  11. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут