Подскажите, пожалуйста, как переделать метод menu(), чтобы всё работало правильно для следующей программы:
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы для вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта - многочлена.
| Код | #include <iostream> using namespace std; class Mnogochlen { int A[100], n; public: void vvod(); void vichisl(); void slozh(Mnogochlen mA, Mnogochlen mB); void vichit(Mnogochlen mA, Mnogochlen mB); void umnozh(Mnogochlen mA, Mnogochlen mB); void vivod(); void menu(); }; int main() { Mnogochlen a,b,c; a.vvod(); a.vivod(); b.vvod(); b.vivod(); c.menu(); system("Pause"); return 0;} void Mnogochlen::menu() { unsigned int p=0; {cout<<"\n 1:Vichislenie v tochke \n 2:Slozhenie \n 3:Vichitanie \n 4:Umnozhenie \n 5:EXIT \n"; cin>>p; switch(p) { case 1: vichisl(); break; case 2: slozh(); break; case 3: vichit(); break; case 4: umnozh(); break; default: cout<<"Exit"; }} while (p<4); }; void Mnogochlen::vvod() { cout<<endl; cout<<"vvedite stepen mnogochlena: "; cin>>n; cout<<"vvedite koefficienti\n"; for (int k=0;k<=99;k++) {A[k]=0;} for (int i=0;i<=n;i++) {cout<<" a"<<i<<" = "; cin>>A[i];} }
void Mnogochlen::vivod() { int f; f=0; for (int i=n;i>=0;i--) if (A[i]!=0) {if(f==0){if(i!=0)cout<<A[i]<<"*x^"<<i; else cout<<A[i]; f++;} else {if(i!=0) if(A[i]>0) cout<<"+"<<A[i]<<"*x^"<<i; else cout<<A[i]<<"*x^"<<i; else if(A[i]>0) cout<<"+"<<A[i]; else cout<<A[i]; f++;} } if (f==0) {cout<<0;} cout<<endl; }
void Mnogochlen::vichisl() { cout<<endl; int q,w,e; w=0; cout<<"vvedite X: "; cin>>q; e=1; for (int i=0;i<=n;i++) { w=w+A[i]*e; e=e*q;} cout<<"f("<<q<<") = "<<w; cout<<endl; } void Mnogochlen::slozh(Mnogochlen mA, Mnogochlen mB) { for (int k=0;k<=99;k++) {A[k]=0;} if (mA.n>mB.n) n=mA.n; else n=mB.n; for (int i=0;i<=n;i++) {A[i]=mA.A[i]+mB.A[i]; } }
void Mnogochlen::vichit(Mnogochlen mA, Mnogochlen mB) {for (int k=0;k<=99;k++) {A[k]=0;} if (mA.n>mB.n) n=mA.n; else n=mB.n; for (int i=0;i<=n;i++) {A[i]=mA.A[i]-mB.A[i]; } }
void Mnogochlen::umnozh(Mnogochlen mA, Mnogochlen mB) { for (int k=0;k<=99;k++) {A[k]=0;} n=mA.n+mB.n; for (int i=0;i<=mA.n;i++) for (int j=0;j<=mB.n;j++) {A[i+j]=A[i+j]+mA.A[i]*mB.A[j]; } }
|
|