Здравейте, беше ми зададена следната задача(прилагам я с моето решение):
/* Представяне на функционална зависимост между три реални числа
имащи вида: F(X, Y, Z) = (X сигма1 Y) сигма2 (X сигма3 Z),
където всчка от операциите сигма1, сигма2 и сигма3 е заместена
със някое от математическите дейстшия събиране, изваждане,
умножение, деление.
@Изготвил: Тодор Тодоров
*/
#include <iostream>
using namespace std;
class mathFunc { // Създаване на клас mathFunc
char SIGMA1, SIGMA2, SIGMA3;
public:
mathFunc() {}
void Read() { // Въвеждане на сигма1, сигма2, сигма3
cout<<"Vyvedete stoinosti za Sigma:\n";
cout<<"SIGMA1 = ";
cin>>SIGMA1;
cout<<"SIGMA2 = ";
cin>>SIGMA2;
cout<<"SIGMA3 = ";
cin>>SIGMA3;
}
double Sum(double x,double y, double z) {
/* Използвайки сигма1. сигма2 сигма3 създаваме метод, чрез който
да решим дадената функция
*/
double sum=0, sum1=0, sum2=0;
switch (SIGMA1) { //В sum1 се записва получената стойност на Х и У
case '+':
sum1 = x+y;
break;
case '-':
sum1 = x-y;
break;
case '*':
sum1 = x*y;
break;
case '/':
sum1 = x/y;
break;
default:
sum1 = x*y;
break;
}
switch (SIGMA3) { //В sum2 се записва получената стойност на Х и Z
case '+':
sum2 = x+z;
break;
case '-':
sum2 = x-z;
break;
case '*':
sum2 = x*z;
break;
case '/':
sum2 = x/z;
break;
default:
sum2 = x*z;
break;
}
switch (SIGMA2) {
/* Тук се пресмятат междинните стойности получени в sum1 и sum2
и получаваме решение на функцията със зададените параметри
*/
case '+':
sum = sum1+sum2;
break;
case '-':
sum = sum1-sum2;
break;
case '*':
sum = sum1*sum2;
break;
case '/':
sum = sum1/sum2;
break;
default:
sum = sum1*sum2;
break;
}
return sum;
}
void Write (double x,double y, double z) { // Изход
cout<<"F("<<x<<", "<<y<<", "<<z<<") = ("<<x<<" "<<SIGMA1<<" "<<y<<") "<<SIGMA2<<
" ("<<x<<" "<<SIGMA3<<" "<<z<<") = "<<Sum(x,y,z)<<endl;
}
};
int main () {
double x,y,z;
do {
/* В цикъл до въвеждане на стойност единица за Z се въвеждат
тройки стойности за X, Y, Z, както и сигма1, сигма2 и сигма3
*/
cout<<"Vyvedete stoinosti za x, y, z: \n";
cout<<" X = ";
cin>>x;
cout<<" Y = ";
cin>>y;
cout<<" Z = ";
cin>>z;
cout<<"F("<<x<<", "<<y<<", "<<z<<") = ("<<x<<" SIGMA1 "<<y
<<") SIGMA2 ("<<x<<" SIGMA3 "<<z<<")\n";
mathFunc F1;
F1.Read();
F1.Sum(x,y,z);
F1.Write(x,y,z);
} while (z != 1);
return 0;
}
Въпросът ми е следният. Някой може ли да ми каже има ли начин тези 3 switch case-a да могат да се заместят само с един или пък с отделен метод при използването на който да се извършва определеното аритметично действие за подадени x,y или x,z например.