设计一个类,该类可以表示一个一元二次函数。

设计一个类,该类可以表示一个一元二次函数。在给定的区间内,能求该函数最大值最小值。已有数学思路,设y=ax^2+bx+c,情况分为a>0和a<0,进而分为-b/2a是否在给定区间内,请问思路是否正确?方向是否正确?需要怎样才能完成?

参考下这个

可以参考一下如下代码
下方代码可以兼容分数
如有问题,敬请提出

#include <bits/stdc++.h>
using namespace std;
int main(){
    int aa,ab,ba,bb,ca,cb;
    cout<<"请输入二次函数一般形式的三个系数的分子与分母(共六个整数)"<<endl;
    cin>>aa>>ab>>ba>>bb>>ca>>cb;
    int xla,xlb,xra,xrb;
    cout<<"请输入定义域(分别输入左界和右界的分子与分母,共四个整数)"<<endl; 
    cin>>xla>>xlb>>xra>>xrb;
    char answer;
    cout<<"请输入l或s,l代表求最大值,s代表求最小值"<<endl;
    cin>>answer;
    //输入所需定值 
    
    int ta=-ab*ba;
    int tb=2*aa*bb;
    int la,lb,sa,sb,ya,yb;
    //定义接下来所需要的变量 
    
    if(aa*ab<0){
        if(xla*1.0/xlb<=ta*1.0/tb){
            if(xra*1.0/xrb>=ta*1.0/tb){
                la=ta;
                lb=tb;
                sa=((ta*1.0/tb-xla*1.0/xlb)>=(xra*1.0/xrb-ta*1.0/tb)?xla:xra);
                sb=((ta*1.0/tb-xla*1.0/xlb)>=(xra*1.0/xrb-ta*1.0/tb)?xlb:xrb);
            }
            else if(xra*1.0/xrb<ta*1.0/tb){
                la=xra;
                lb=xrb;
                sa=xla;
                sb=xlb;
            }
        }
        
        else if(xla*1.0/xlb>ta*1.0/tb){
            la=xla;
            lb=xlb;
            sa=xra;
            sb=xrb;    
        }    
    }
    
    
    else if(aa*ab>0){
        if(xla*1.0/xlb<=ta*1.0/tb){
            if(xra*1.0/xrb>=ta*1.0/tb){
                sa=ta;
                sb=tb;
                la=((ta*1.0/tb-xla*1.0/xlb)>=(xra*1.0/xrb-ta*1.0/tb)?xla:xra);
                lb=((ta*1.0/tb-xla*1.0/xlb)>=(xra*1.0/xrb-ta*1.0/tb)?xlb:xrb);
            }
            else if(xra*1.0/xrb<ta*1.0/tb){
                la=xla;
                lb=xlb;
                sa=xra;
                sb=xrb;
            }
        }
        
        else if(xla*1.0/xlb>ta*1.0/tb){
            la=xra;
            lb=xrb;
            sa=xla;
            sb=xlb;    
        }    
    }
    //判断各种情况,得到x的分子与分母 
    
    
    
    
    if(answer=='l'){
        ya=aa*bb*la*la*lb*cb+ab*lb*lb*ba*la*cb+ab*lb*lb*lb*bb*ca;
        yb=ab*lb*lb*lb*bb*cb;
        
        int ym=(ya>=yb?yb:ya); 
    if (ym>0){
       for (int i=ym;i>=1;i--){
          if (ya%i==0&&yb%i==0){
             ya/=i;
             yb/=i;
          }
       }
    }
    else if (ym<=0){
       for (int i=ym;i<0;i++){
          if (ya%i==0&&yb%i==0){
             ya/=i;
             yb/=i;
          }
       }
    }
    cout<<"最大值的最简分子分母分别为"<<ya<<"和"<<yb;    
    }
    
    else if(answer=='s'){
        ya=aa*bb*sa*sa*sb*cb+ab*sb*sb*ba*sa*cb+ab*sb*sb*sb*bb*ca;
        yb=ab*sb*sb*sb*bb*cb;
        
        int ym=(ya>=yb?yb:ya); 
    if (ym>0){
       for (int i=ym;i>=1;i--){
          if (ya%i==0&&yb%i==0){
             ya/=i;
             yb/=i;
          }
       }
    }
    else if (ym<=0){
       for (int i=ym;i<0;i++){
          if (ya%i==0&&yb%i==0){
             ya/=i;
             yb/=i;
          }
       }
    }
    cout<<"最小值的最简分子分母分别为"<<ya<<"和"<<yb;    
    }
    //将x的分子与分母带入函数,求出y的分子与分母并化简,输出 
    
return 0;    
}