Switch. При любом n и x выдает- "Нет решений" - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <math.h>
#define PI 3.141593
#define EXP 2.718281
#define A 1.887452
int main()
{
float x,y;
int n,flag=0;
printf("Vvedide n and x\n");
scanf("%f%f", &n, &x);
switch(n) {
case 1:
if (x >= 1.4 && x < PI)
{
y=pow(sin(PI+x), 2)+((A+sqrt(x))/(x*x*x+A));
flag=1;
}
break;
case 2 :
if (x >= PI && x <= 5.2)
{
y=pow((A+pow(EXP, x-PI)), 1.0/3);
flag=1;
}
break;
}
if (flag == 1) {
printf("%f", y);
}
else {
printf("Net Reshenii dlya takix dannih");
}
}Решение задачи: «Switch. При любом n и x выдает- "Нет решений"»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
int i,n;
float a,f,c,z,x,y;
puts("Vvedite a= ");
scanf("%f",&a);
puts("Vvedite c= ");
scanf("%f",&c);
puts("Vvedite z= ");
scanf("%f",&z);
if(z<=1)
x=pow(z,2)+1;
if(z>1)
x=1/sqrt(z-1);
puts("Viberite f");
puts("1. f=2*x");
puts("2. f=x^2");
puts("3. f=x/3");
scanf("%d",&i);
switch(i)
{
case 1: f=2*x; n=1; break;
case 2: f=pow(x,2); n=2; break;
case 3: f=x/3; n=3; break;
default: puts("Funkciya ne vibrana");
}
y=a*pow(sin((pow(f,2))-1),3)+c*log(x)+exp(x);
printf("y=%.4f",y);
printf("\nRaschet po formule %d",n);
getch();
}
Объяснение кода листинга программы
- Ввод значений переменных a, c, z, x и y с помощью функции scanf.
- Проверка значения переменной z и присвоение значения переменной x в зависимости от результата.
- Вывод списка функций f для выбора пользователем.
- Ввод выбора пользователя с помощью функции scanf и сохранение значения в переменной i.
- Осуществление выбора с помощью оператора switch и присвоение значения переменной f в зависимости от выбранного случая.
- Вычисление значения y с помощью формулы, включающей переменные a, c, x и f.
- Вывод значения y с помощью функции printf.
- Вывод сообщения о том, какая формула была использована для расчета с помощью функции printf.
- Ожидание нажатия клавиши с помощью функции getch.