Напечатать таблицу значений функции заданной в виде графика. Ошибка - C (СИ)

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

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

Задача: Напечатать таблицу значений функции заданной в виде графика(в приложении) при изменении аргумента от X начального до X конечного с шагом дельтаХ(исходные данные задать самостоятельно, так чтобы Xn, Xk включал все участки графика, а дельтаХ выбрать так чтобы в таблице было 10 строчек). Таблица должна иметь вид: | x | f(x) | | Xn | ... | |... |... | 10 строк всего |Xk | .....| Я не до конца понял условие задачи.Получается пользователь сам высчитывает шаг, и вводит его... Я попытался написаль программу, которая выводит таблицу значений от Xn до Xk в 10 строк. Но у меня она не всегда выводит 10 строк. Понятно что не каждое число делится на 9 и тогда шаг округляется и условие не выполняется. Как сделать так чтобы он всегда выводил по 10 строчек.
#include <stdio.h>
#include <math.h>
 
 void main()
   {
    double Xn,Xk, y,x, sh;
 
    do
      {printf("Введите X начальное=");
       scanf("%lf",&Xn);
 
       printf("\nВведите X конечное=");
       scanf("%lf",&Xk);
 
       if (Xn>=Xk) printf("\nX начальное должно быть больше X конечное\n" );
      }
    while ( Xn >= Xk );
 
    sh=(Xk-Xn)/9.; //shag
 
    printf("\n__________________");
    printf("\n|     x    |    f(x)  |");
 
    for (x=Xn; x <= Xk; x+=sh);
     {
      if (x<=-3.)
       {
        y=3.;
        printf("\n| %8.3lf | %8.3lf |", x, y);
       }
 
       else
 
            if (x>-3. && x<=3.)
                {
                 y=3-sqrt(9-pow(x,2.));
                 printf("\n| %8.3lf | %8.3lf |", x, y);
                }
             else
 
                  if (x>3. && x<=6.)
                   {
                    y=-2*x+9;
                    printf("\n| %8.3lf | %8.3lf |", x, y);
                   }
                   else {
                         y=x-9;
                         printf("\n| %8.3lf | %8.3lf |", x, y);
                        }
       
     }
    printf("\n-----------------");
   }

Решение задачи: «Напечатать таблицу значений функции заданной в виде графика. Ошибка»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
 void main()
   {
    double Xn,Xk, y,x, sh;
    int i;
 
 
    do
      {printf("Введите X начальное=");
       scanf("%lf",&Xn);
 
       printf("\nВведите X конечное=");
       scanf("%lf",&Xk);
 
       if (Xn>=Xk) printf("\nX нач. должно быть меньше X кон.\n" );
      }
    while ( Xn >= Xk );
 
 
    sh=(Xk-Xn)/9; //шаг
 
    printf("\n┌──────────┬──────────┐");
    printf("\nв”‚     x    в”‚    f(x)  в”‚");
 
    for (i=1; i<=10; i+=1)
 
     {
      x=Xn+sh*(i-1);
        if (x<=-3.)
       {
        y=3.;
        printf("\n├──────────┼──────────┤");
        printf("\nв”‚ %8.3lf в”‚ %8.3lf в”‚", x, y);
       }
 
       else
 
            if (x>-3. && x<=3.)
                {
                 y=3-sqrt(9-pow(x,2.));
                 printf("\n├──────────┼──────────┤");
                 printf("\nв”‚ %8.3lf в”‚ %8.3lf в”‚", x, y);
                }
             else
 
                  if (x>3. && x<=6.)
                   {
                    y=-2*x+9;
                    printf("\n├──────────┼──────────┤");
                    printf("\nв”‚ %8.3lf в”‚ %8.3lf в”‚", x, y);
                   }
                   else {
                         y=x-9;
                         printf("\n├──────────┼──────────┤");
                         printf("\nв”‚ %8.3lf в”‚ %8.3lf в”‚", x, y);
                        }
      }
    printf("\n└──────────┴──────────в”

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

  1. Объединение двух строк с помощью оператора ||.
  2. Использование функции scanf для ввода числовых значений.
  3. Вывод таблицы значений функции с помощью функции printf.
  4. Использование условных операторов if-else для определения диапазона значений функции.
  5. Использование математических функций, таких как sqrt и pow, для вычисления значений функции.
  6. Использование оператора while для повторения ввода, пока значение X начального не станет больше значения X конечного.
  7. Вычисление шага с помощью формулы (Xk-Xn)/9.
  8. Вывод заголовка таблицы с помощью функции printf.
  9. Использование цикла for для вычисления значений функции для каждого шага.
  10. Использование условных операторов if-else для определения типа графика функции.
  11. Вывод значений X и Y на экран с помощью функции printf.
  12. Использование символов в”‹ и ┈ для форматирования вывода таблицы.
  13. Использование символа в”‘ для создания вертикального разделителя таблицы.
  14. Использование символа ┈ для создания горизонтального разделителя таблицы.
  15. Использование символа в”’ для создания разделителя между значениями X и Y в таблице.
  16. Использование символа ┈ для создания разделителя между значениями Y в таблице.
  17. Использование символа в”‘ для создания разделителя между значениями X в таблице.
  18. Использование символа ┈ для создания разделителя между значениями Y в таблице.
  19. Использование символа в”’ для создания разделителя между значениями X в таблице.
  20. Использование символа ┈ для создания разделителя между значениями Y в таблице.

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы