Общее задание:
Используя операторы ветвления (if и if … else), составить программу для вычисления составной (сложной) функции, имеющей различный вид на разных участках аргумента. С помощью переключателя (switch) указать на каком отрезке находится введенное с клавиатуры значение аргумента, и вывести значение функции в данной точке.
Все исходные данные, необходимые для проведения вычислений, вводить
с клавиатуры.
Функция и отрезки:
y=pow(x,2); -2.0<=x<1.0 y=sqrt(x); 1.0<=x<2.0 y=sqrt(x-2)+sqrt(2); 2.0<=x<3.0 y=1+sqrt(x-1); 3.0<=x<=4.0
Пример решения задачи (листинг)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main()
{
/* номер отрезка, def – выбор по умолчанию */
enum {def,o1,o2,o3,o4} otr;
float x,y;
clrscr();
printf("Тема: Ветвление программы \n");
printf(" Задание: Используя оператор if, составить программу \n");
printf("для вычисления составной функции вида: \n");
printf("1> sqr(x) при x от -2.0 до 1.0\n");
printf("2> sqrt(x) при x от 1.0 до 2.0\n");
printf("3> y=sqrt(x-2)+sqrt(2) при x от 2.0 до 3.0\n");
printf("4> y=1+sqrt(x-1) при x от 3.0 до 4.0\n");
printf("указать отрезок, где находится введенный с клавиатуры \n");
printf("аргумент и вывести значение функции в данной точке. \n");
printf("Введите x=");
scanf("%f",&x); printf("\n");
/* Выбор отрезка */
otr=def;
if ((x>=-2.0) && (x<1.0)) otr=o1;
else if ((x>=1.0) && (x<2.0)) otr=o2;
if ((x>=2.0) && (x<3.0)) otr=o3;
if ((x>=3.0) && (x<=4.0)) otr=o4;
/* Вычисление значения функции */
switch (otr)
{
case o1: y=pow(x,2); break;
case o2: y=sqrt(x); break;
case o3: y=sqrt(x-2)+sqrt(2); break;
case o4: y=1+sqrt(x-1); break;
default: printf("Число вне диапазона."); getch(); exit(1);
}
printf ("Промежуток %d: y= %3.2f; ",otr,y);
getch();
}