Протабулировать функцию - C (СИ) (79938)
Формулировка задачи:
Здравствуйте. Помогите решить проблемную задачу. Задание звучит так: Программа должна запросить и считать с клавиатуры значения х0,х1 и dx. Затем вывести на экран таблицу (использовать псевдографику) значений функции y(x) от х0 до х1 с шагом dx (х0 и х1 входят в промежуток). Использовать циклы While и Do While.
Просмотрев множество вариантов выполнения задачи и выбрав более лучший у меня получилось вот такое:
В примерах всегда разбирались варианты с шагом не больше чем 2 (0.1 и 0.01) знака после запятой и программа работает правильно, но как оказалось, преподавателю необходим более меньший шаг.(например 0.001, 0.0001,0.0001,0.00001,0.000001), как оказалось мой алгоритм не подходит для табулирование с таким маленьким шагом. Пытаясь найти подходящее условие выхода из цикла я перебрал много условий,но не одно не подходит ко всем вариантам шага(то цикл доходит не до конца, то выполняется на шаг больше).
main()
{
double x,x1,dx,z;
printf("Vvedite x0: ");
scanf("%lf",&x);
printf("Vvedite x1: ");
scanf("%lf",&x1);
printf("Vvedite dx: ");
scanf("%lf",&dx);
printf("\n *****************************\n");
printf(" * x * y(x) *\n");
printf(" *****************************\n");
while(x<x1+dx)
{
printf(" * %9.5lf * %9.5lf *\n",x,sin(x));
x += dx;
}
printf(" *****************************\n");
}Подскажите пожалуйста подходящее условие выхода из цикла или возможно более правильное решение данной задачи.
Решение задачи: «Протабулировать функцию»
textual
Листинг программы
int n;
n=(x1-x)/dx+2;
while(n--)
{
.....
}
Объяснение кода листинга программы
- Объявляется переменная
nтипа int. - Переменная
nинициализируется выражением (x1-x)/dx+2. - Запускается цикл while, который выполняется до тех пор, пока значение переменной
nбольше или равно 0. - В теле цикла while находится произвольный код, который нужно выполнить для каждого значения переменной
n. - После каждой итерации цикла while значение переменной
nуменьшается на 1. - Цикл while завершается, когда значение переменной
nстановится меньше или равным 0.