📄 control.cpp
字号:
// Control.cpp: implementation of the CControl class.
//
//////////////////////////////////////////////////////////////////////
#include "Control.h"
#include "KeyChar.h"
#include "string.h"
#include "conio.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CControl::CControl()
{
}
bool CControl::CreatQuantic()
{
char str[]="+-()xX^";
char str0[]="";
CKeyChar key;
int value;
char str1[100];
CQuantic * pQuantic=new CQuantic();
key.SetStyle(500,KEY_LETTER,str0);
cout<<" 创建多项式说明"<<endl;
cout<<" 输入多项式前要给多项式取个名称(名字),只能是英文字母。 输"<<endl;
cout<<"入多项式时,除了数字和'+'、'-'、'^'、'X'、'x'外,其它字符均不"<<endl;
cout<<"接受。如果要输入一个多项式:负 34 乘以 X 的 -3 次方,加上 X的"<<endl;
cout<<"2 次方,减去 3乘以 X,加上 23。输入方法如下:"<<endl;
cout<<"方法一:-34X^-3+1x^2+3X^1-23X^0"<<endl;
cout<<"方法二:-34x^-3+x2+3X-23\n"<<endl;
cout<<"注意:负次方前必须有 '^',例如:-34X^-3。\n"<<endl;
if(!m_clList.IsEmpty())
DisplayALL();
cout<<"\n请输入多项式的名称(只能输入是字母):"<<endl;
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(strlen(str1))
{
if(EqualName(str1))
{
cout<<"\n名字已经存在,请重新输入一个名称!"<<endl;
key.SetStar();
continue;
}
pQuantic->SetName(str1);
key.SetStar();
break;
}
}
}
key.SetStyle(500,KEY_NUMBER,str);
cout<<"\n请输入多项式(只能输入是数字和+ - ^ X x):"<<endl;
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(pQuantic->AddString(str1))
{
if(!strlen(str1))
continue;
cout<<"\n多项式有效"<<endl;
pQuantic->Display();
m_clList.Add(pQuantic);
break;
}
else
{
cout<<"\n多项式无效,重新输入"<<endl;
key.SetStar();
}
}
}
cout<<"创建成功!"<<endl;
return true;
}
bool CControl::DeleteQuantic()
{
char str0[]="";
CKeyChar key;
int value;
char str1[100],ch;
key.SetStyle(500,KEY_LETTER,str0);
if(m_clList.IsEmpty())
{
cout<<"没有创建多项式!"<<endl;
return false;
}
cout<<"删除多项式:"<<endl;
DisplayALL();
cout<<"请输入要删除的多项式名称:"<<endl;
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(strlen(str1))
{
int i=EqualName(str1);
if(i)
{
cout<<endl;
m_clList[i-1]->Display();
cout<<"你真的要删除吗?(Y/y):";
cin>>ch;
if(ch=='Y'||ch=='y')
{
delete m_clList[i-1];
m_clList.Delete(i-1);
cout<<"已经成功地删除!"<<endl;
}
break;
}
cout<<"\n名字不存在,请重新输入一个名称!"<<endl;
key.SetStar();
continue;
}
}
}
return true;
}
bool CControl::DisplayALL()
{
int length=m_clList.GetLength();
//cout<<"显示所有的多项式:"<<endl;
if(length)
cout<<"总共创建 "<<length<<" 多项式,如下:"<<endl;
else
cout<<"没有创建多项式!总数为零!"<<endl;
for(int i=0;i<length;i++)
{
m_clList[i]->Display();
}
return true;
}
bool CControl::AddQuantic()
{
char str0[]="";
CKeyChar key;
int value,add[2];
char str1[100];
int data[2];
key.SetStyle(500,KEY_LETTER,str0);
if(m_clList.IsEmpty())
{
cout<<"没有创建多项式!"<<endl;
return false;
}
cout<<"两个多项式项加:一个多项式 + 被加多项式 = 和多项式:"<<endl;
DisplayALL();
cout<<"\n请输入和多项式的名称:"<<endl;
CQuantic * pQuantic=new CQuantic();
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(strlen(str1))
{
if(EqualName(str1))
{
cout<<"\n名字已经存在,请重新输入一个名称!"<<endl;
key.SetStar();
continue;
}
pQuantic->SetName(str1);
key.SetStar();
break;
}
}
}
for(int j=0;j<2;j++)
{
if(j==0)
cout<<"\n请输入一个多项式的名称:"<<endl;
else
cout<<"\n请输入被加多项式的名称:"<<endl;
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(strlen(str1))
{
int i=EqualName(str1);
if(i)
{
add[j]=i-1;
//cout<<endl;
//m_clList[i-1]->Display();
cout<<"\n请输入多项式的系数值(整数):";
cin>>data[j];
key.SetStar();
break;
}
cout<<"\n名字不存在,请重新输入一个名称!"<<endl;
key.SetStar();
continue;
}
}
}
}
pQuantic->AddQuantic(* m_clList[add[0]],data[0]);
pQuantic->AddQuantic(* m_clList[add[1]],data[1]);
m_clList[add[0]]->GetName(str1);
cout<<data[0]<<str1<<endl;;
m_clList[add[1]]->GetName(str1);
cout<<" + \n"<<data[1]<<str1<<endl;
cout<<" = "<<endl;
pQuantic->Display();
m_clList.Add(pQuantic);
return true;
}
bool CControl::Calculate()
{
char str0[]="";
CKeyChar key;
int value;
char str1[100];
double data;
key.SetStyle(500,KEY_LETTER,str0);
if(m_clList.IsEmpty())
{
cout<<"没有创建多项式!"<<endl;
return false;
}
cout<<"赋值计算多项式:"<<endl;
DisplayALL();
cout<<"请输入要计算的多项式名称:"<<endl;
while(1)
{
value=key.GetKey();
if(value=='\r')
{
key.GetKey(str1);
if(strlen(str1))
{
int i=EqualName(str1);
if(i)
{
cout<<endl;
m_clList[i-1]->Display();
cout<<"请输入 X 的值:";
cin>>data;
cout<<"当 X="<<data<<"时,此多项式的值为 ";
cout<<m_clList[i-1]->Calculate(data)<<endl;;
break;
}
cout<<"\n名字不存在,请重新输入一个名称!"<<endl;
key.SetStar();
continue;
}
}
}
return true;
}
CControl::~CControl()
{
int length=m_clList.GetLength();
for(int i=0;i<length;i++)
delete m_clList[i];
}
int CControl::EqualName(char String[])
{
int length=m_clList.GetLength();
for(int i=0;i<length;i++)
if(m_clList[i]->IsEqual(String))
return i+1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -