Напечатать таблицу значений функции заданной в виде графика. Ошибка - 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└──────────┴──────────в”
Объяснение кода листинга программы
- Объединение двух строк с помощью оператора
||
. - Использование функции scanf для ввода числовых значений.
- Вывод таблицы значений функции с помощью функции printf.
- Использование условных операторов if-else для определения диапазона значений функции.
- Использование математических функций, таких как sqrt и pow, для вычисления значений функции.
- Использование оператора
while
для повторения ввода, пока значение X начального не станет больше значения X конечного. - Вычисление шага с помощью формулы (Xk-Xn)/9.
- Вывод заголовка таблицы с помощью функции printf.
- Использование цикла for для вычисления значений функции для каждого шага.
- Использование условных операторов if-else для определения типа графика функции.
- Вывод значений X и Y на экран с помощью функции printf.
- Использование символов
в”‹
и┈
для форматирования вывода таблицы. - Использование символа
в”‘
для создания вертикального разделителя таблицы. - Использование символа
┈
для создания горизонтального разделителя таблицы. - Использование символа
в”’
для создания разделителя между значениями X и Y в таблице. - Использование символа
┈
для создания разделителя между значениями Y в таблице. - Использование символа
в”‘
для создания разделителя между значениями X в таблице. - Использование символа
┈
для создания разделителя между значениями Y в таблице. - Использование символа
в”’
для создания разделителя между значениями X в таблице. - Использование символа
┈
для создания разделителя между значениями Y в таблице.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д