就是
《c++程序设计教程》
原著:H.M.Deitel;P.J.Deitel
译自机械工业出版社。上面的两道作业题。p62,2.7和p93,3.81。用于分数运算的类RationalNumber。用整数变量表示类的私有数据成员(即分子和分母)。给类提供一个能够对所声明的对象初始化的构造函数。为了能够在不提供初始化值的情况下也能对对象初始化,构造汉书中应该包含默认值。构造函数还应该以最简分数形式存储数据,即2/4应该在对象中存储成分子为1,分母为2的形式。公有成员函数应该有下列功能:
a.两个有理数相加,以最简分数形式保存结果。
b.两个有理数相减,以最简分数形式保存结果。
c.两个有理数相乘,以最简分数形式保存结果。
d.两个有理数相除,以最简分数形式保存结果。
e.以a/b的形式输出有理数(a是分子,b是分母)。
f.以浮点形式输出有理数。2。一个链表类List,要求: 能够添加,删除,查找节点。 能够判断是否链表为空。
/////////////////////////////////////
以上两个均要测试程序测试这个类的所有函数,最好是控制台程序。mfc提供的也可以,自己写的也成。最重要的是要有源代码!c++语法都忘光了,也是受人所托,先感谢各位了!
《c++程序设计教程》
原著:H.M.Deitel;P.J.Deitel
译自机械工业出版社。上面的两道作业题。p62,2.7和p93,3.81。用于分数运算的类RationalNumber。用整数变量表示类的私有数据成员(即分子和分母)。给类提供一个能够对所声明的对象初始化的构造函数。为了能够在不提供初始化值的情况下也能对对象初始化,构造汉书中应该包含默认值。构造函数还应该以最简分数形式存储数据,即2/4应该在对象中存储成分子为1,分母为2的形式。公有成员函数应该有下列功能:
a.两个有理数相加,以最简分数形式保存结果。
b.两个有理数相减,以最简分数形式保存结果。
c.两个有理数相乘,以最简分数形式保存结果。
d.两个有理数相除,以最简分数形式保存结果。
e.以a/b的形式输出有理数(a是分子,b是分母)。
f.以浮点形式输出有理数。2。一个链表类List,要求: 能够添加,删除,查找节点。 能够判断是否链表为空。
/////////////////////////////////////
以上两个均要测试程序测试这个类的所有函数,最好是控制台程序。mfc提供的也可以,自己写的也成。最重要的是要有源代码!c++语法都忘光了,也是受人所托,先感谢各位了!
gzgzgzgzgzgzgzgzgzgzgzgz gzgz gzgz
gzgz gzgz gzgz gzgz gzgz
gzgzgzgzgzgzgzgzgzgz gzgzgzgzgzgzgzgzgzgzgzgzgz
gzgz gzgz gzgz gzgzgzgzgzgzgz
gzgzgzgzgzgzgzgzgzgzgzgz gzgzgzgz gzgz
gzgz gzgz gzgz gzgz
gzgzgzgzgzgzgzgzgzgzgz gzgz gzgz
gzgz gzgz gzgz gzgz gzgz
gzgz gzgz gzgz gzgz gzgz
gzgz gzgz gzgzgz gzgz gzgz
gzgz gzgz gzgzgzgzgzgzgzgz
#include "stdio.h"
class CRationalNumber
{
public:
void GetResult(bool bFloat=false);
CRationalNumber operator * (CRationalNumber &second);
CRationalNumber operator - (CRationalNumber & second);
int GetRat();
int GetDen();
CRationalNumber operator + (CRationalNumber &second);
CRationalNumber operator / (CRationalNumber &second);
CRationalNumber(int rat=1, int den=1);
virtual ~CRationalNumber();private:
int Simple(int first,int second);
int denominator;
int numerator;
int Minrator(int first, int second);};CRationalNumber::~CRationalNumber()
{}CRationalNumber::CRationalNumber(int rat, int den)
{
if(den==0)
{
printf("error! denominator cannot be 0!");
exit(0);
}
if(rat==0)
{
denominator=1;
numerator=0;
}
else
{
denominator =den/Simple(den,rat);
numerator = rat/Simple(den,rat);
}
}int CRationalNumber::Simple(int first,int second)
{
int var1,var2,var3,tmp;
first>second? (var1=first,var2=second):(var1=second,var2=first);
var3 = var1 % var2; if (var3 == 0)
tmp = var2;
else
{
while(var3 > 0)
{
var1 = var2;
var2 = var3;
var3 = var1 % var2;
}
tmp = var2;
}
if(tmp<0) tmp=0-tmp;
return tmp;
}CRationalNumber CRationalNumber::operator + (CRationalNumber& second)
{
int tmp=Minrator(denominator, second.GetDen());
return CRationalNumber(tmp/denominator*numerator+tmp/second.GetDen()*second.GetRat(),tmp);
}int CRationalNumber::Minrator(int first, int second)
{
return first*second/Simple(first,second);
}
int CRationalNumber::GetDen()
{
return denominator;
}int CRationalNumber::GetRat()
{
return numerator;
}CRationalNumber CRationalNumber::operator -(CRationalNumber &second)
{
int tmp=Minrator(denominator, second.GetDen());
return CRationalNumber(tmp/denominator*numerator-tmp/second.GetDen()*second.GetRat(),tmp);}CRationalNumber CRationalNumber::operator *(CRationalNumber &second)
{
return CRationalNumber(numerator*second.GetRat(),denominator*second.GetDen());
}CRationalNumber CRationalNumber::operator /(CRationalNumber &second)
{
if(second.GetRat()==0)
{
printf("Error,devide by 0!\n");
exit(0);
}
return CRationalNumber(numerator*second.GetDen(),denominator*second.GetRat());
}void CRationalNumber::GetResult(bool bFloat)
{
if(denominator==1)
printf("%d\n",numerator);
else if(numerator==0)
printf("%d\n",0);
else if(bFloat)
printf("%f\n",(float)numerator/(float)denominator);
else
printf("%d/%d\n",numerator,denominator);
}
int main(int argc, char* argv[])
{
int num1a,num1b,num2a,num2b;
bool opt;
printf("please input two numbers:\n");
printf("the first number:");
scanf("%d/%d",&num1a,&num1b);
printf("\nthe second number:");
scanf("%d/%d",&num2a,&num2b); CRationalNumber a1(num1a,num1b),a2(num2a,num2b),a3;
printf("\nplease select:1-output float, 0-output numeric\n"); printf("Add ? ");
a3=a1+a2;
scanf("%d",&opt);
a3.GetResult(opt); printf("Sub ? ");
a3=a1-a2;
scanf("%d",&opt);
a3.GetResult(opt); printf("Mul ? ");
a3=a1*a2;
scanf("%d",&opt);
a3.GetResult(opt); printf("Dev ? ");
a3=a1/a2;
scanf("%d",&opt);
a3.GetResult(opt);
return 0;
}
建议搂主多看一些C++方面的书!
懒得再看,我也是受人所托。链表的应该很简单阿。学c的时候相信大家都做过吧。继续等待!
UPUPUPUP
UPUPUP
UPUPUPUP
UPUPUP
UPUPUP
UPUP UPUP
UPUPUP UPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUPUP UPUPUP
UPUPUPUPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUPUP UPUPUP
UPUPUPUPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUP UPUPUP
UPUP UPUPUPUPUPUP UPUPUP
UPUPUPUPUPUPUPUP UPUPUPUPUP
UPUP UPUPUPUP
UPUP UPUPUPUP
UPUP
UPUP
UPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUP UPUPUP
UPUPUP
UPUPUP
UPUP
UPUPUP
UPUPUPUPUPUPUPUP
UPUPUPUPUP
UPUP
UPUP
UPUP
UPUP UPUP
UPUP UPUP
UPUP UPUPUP
UPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUP
UPUPUPUPUP UPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUP
UPUPUPUP
UPUPUP
UPUPUPUP
UPUPUP
UPUPUP
UPUP UPUP
UPUPUP UPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUPUP UPUPUP
UPUPUPUPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUPUP UPUPUP
UPUPUPUPUPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUP
UPUP UPUPUP
UPUP UPUPUPUPUPUP UPUPUP
UPUPUPUPUPUPUPUP UPUPUPUPUP
UPUP UPUPUPUP
UPUP UPUPUPUP
UPUP
UPUP
UPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUP UPUPUP
UPUPUP
UPUPUP
UPUP
UPUPUP
UPUPUPUPUPUPUPUP
UPUPUPUPUP
UPUP
UPUP
UPUP
UPUP UPUP
UPUP UPUP
UPUP UPUPUP
UPUP UPUPUP
UPUPUP UPUPUP
UPUPUP UPUPUPUP
UPUPUPUPUP UPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUP
#include "stdio.h"
#include "conio.h"typedef struct DATA
{
int mydata;
DATA *next;
}DATA;class CMyList
{
public:
bool modify(int data,int i);
int getlength();
bool show();
bool insertdata(DATA * data);
bool isempty();
bool insertdata(DATA *data, int i);
bool deldata(int i);
bool deldata(DATA data);
int find(DATA data);
bool getdata(int i, DATA &data);
CMyList();
virtual ~CMyList();private:
DATA * culnext;
DATA * cul;
DATA listhead;
int length;
};CMyList::CMyList()
{
length=0;
listhead.next=NULL;
}CMyList::~CMyList()
{}bool CMyList::getdata(int i, DATA &data)
{
if(i<=0||i>length)
{
printf("error,cannot get Data %d\n",i);
return false;
}
else
{
cul=&listhead;
for (int index=1; index<=i; index++)
{
cul=cul->next;
}
data.mydata=cul->mydata;
data.next=cul->next;
return true;
}
}
int CMyList::find(DATA data)
{
cul=&listhead;
culnext=cul->next;
for (int index=1; index<=length; index++)
{
if (culnext->mydata==data.mydata) return index;
else
{
cul=cul->next;
culnext=culnext->next;
}
}
return 0;
}bool CMyList::deldata(DATA data)
{
int index=find(data);
if(index)
{
length--;
cul->next=culnext->next;
delete culnext;
return true;
}
else
{
printf("cannot find the data:%d\n",data.mydata);
return false;
}
}bool CMyList::deldata(int i)
{
if(length<i||i<1)
{
printf("error,no this node!\n");
return false;
}
else
{
cul=&listhead;
culnext=cul->next;
for (int index=1; index<i; index++)
{
cul=cul->next;
culnext=culnext->next;
}
cul->next=culnext->next;
delete culnext;
length--;
return true;
}
}bool CMyList::insertdata(DATA *data, int i)
{
if (i<0||i>length)
{
printf("error,cannot insert at %d\n",i);
return false;
}
else
{
length++;
cul=&listhead;
for (int index=0; index<i; index++)
{
cul=cul->next;
}
data->next=cul->next;
cul->next=data;
return true;
}
}bool CMyList::isempty()
{
if(length) return false;
else return true;
}bool CMyList::insertdata(DATA *data)
{
return insertdata(data,length);
}bool CMyList::show()
{
if(length==0)
{
printf("the list is empty!");
return false;
}
else
{
printf("the list have %d datas,they are:\n",length);
cul=&listhead;
for(int index=1; index<=length; index++)
{
cul=cul->next;
printf("(%d)%d\n",index,cul->mydata);
}
return true;
}
}int CMyList::getlength()
{
return length;
}bool CMyList::modify(int data, int i)
{
if(i<=0||i>length)
{
printf("error,cannot modify Data %d\n",i);
return false;
}
else
{
cul=&listhead;
for (int index=1; index<=i; index++)
{
cul=cul->next;
}
cul->mydata=data;
return true;
}
}
int main(int argc, char* argv[])
{
int method;
int value,index;
CMyList list;
DATA *pdata,data;
for (int i=1; i<6; i++)
{
DATA *pdata=new DATA;
pdata->mydata=i;
list.insertdata(pdata);
}
list.show();
do
{
printf("\n\n0--quit\n1--insert by index\n2--del by index\n3--del by value\n4--get value by index\n5--get length of the list\n6--modify by index\n");
printf("please select:");
method=getche();
printf("\n");
switch(method)
{
case '1':
printf("please input the value:");
scanf("%d",&value);
if(!list.isempty())
{
printf("please input the index:");
scanf("%d",&index);
}
else index=0;
pdata=new DATA;
pdata->mydata=value;
list.insertdata(pdata,index);
list.show();
break;
case '2':
printf("please input the index:");
scanf("%d",&index);
list.deldata(index);
list.show();
break;
case '3':
printf("please input the value:");
scanf("%d",&value);
data.mydata=value;
list.deldata(data);
list.show();
break;
case '4':
printf("please input the index:");
scanf("%d",&index);
list.getdata(index,data);
printf("the value of %d is %d",index,data.mydata);
break;
case '5':
printf("the length of the list is %d",list.getlength());
break;
case '6':
printf("please input the value:");
scanf("%d",&value);
printf("please input the index:");
scanf("%d",&index);
list.modify(value,index);
list.show();
default:break;
}
}
while(method!=48);
return 0;
}