- 博客(0)
- 资源 (5)
- 收藏
- 关注
模板数组类(支持分数和浮点数的求和计算) .cpp
【问题描述】
封装一个模板数组类Array,支持以下操作:
1. 构造函数Array(int n),将数组初始化为n个存储空间,建议使用vector;
2. 函数input(int n),使用插入运算符<<读取数据,最多读取n个元素,但不能超过数组存储空间的上限;
3. 重载下标运算符,返回数组的元素。
封装一个分数类Fract,用来处理分数功能和运算,能支持你的Array类使用。
1. 构造:传入两个参数n和m,表示n/m;分数在构造时立即转化成最简分数。
提示:分数化简有专门的算法,可自行调研
2. show()函数:分数输出为“a/b”或“-a/b”的形式,a、b都是无符号整数。若a为0或b为1,只输出符号和分子,不输出“/”和分母。
3. 在分数类上重载+=运算符,进行分数的加法运算。
【输入形式】
输入为两部分,分别是一组实数测试样例和一组分数测试样例。
这两组测试样例都以正整数n,且n小于1000,n表示需要输入n个实数(或分数)。
测试样例的第二行开始为n个实数(或分数)。其中每个分数输入为两个整数n、m,表示分数n/m。
【输出形式】
第一部分输出一个实数,是第一组测试样例之和;第二部分输出一个分数,是第二组测试样例之和。
分数输出时为最简形式,负号只会出现在最前面,若分母为1或分子为0,则只输出一个整数,即分子部分,而没有“/”和分母部分。
【样例输入】
4
6 8 7 5
9
1 3 20 -15 80 150 -9 1 6 6 12 16 -33 -48 6 11 0 -10
【样例输出】
26
-17117/2640
25.00 下载源文件
得分25.00 最后一次提交时间:2021-06-08 21:49:12
共有测试数据:5
平均占用内存:1.415K 平均运行时间:0.00648S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确
测试数据3 完全正确
测试数据4 完全正确
测试数据5 完全正确
详细
2021-06-30
c++程序链表类设计.cpp
【问题描述】
请设计一个链表类,实现链表的初始化、插入、删除和打印操作。
节点的定义如下:
typedef int elementType;
typedef struct node
{
elementType data;
node* next;
} LList, *PList;
链表类的定义及要求如下:
class linkedList
{
public:
linkedList();//构造函数
virtual ~linkedList();//析构函数,注意要链表中所有节点的资源
void insert( int value );//警告:必须初始化才能使用!
bool initiate();//初始化单链表,使用new操作创建头结点。如果创建失败,则返回false,否则返回true
bool isEmpty();//判断单链表是否为空
//删除单链表中第pos个元素结点,并将删除的节点的值存在value中。
//注意:如果链表为空、删除位置大于链表长度、以及删除位置为0的情况,需要终止删除并输出相应信息
bool remove( int pos, int& value );
void print();//顺序打印单链表,如果是单链表为空,则输出 Empty
int Length();//返回单链表长度。如果是单链表为空,则返回-1
private:
LList *head;
int len;
};
main函数:
int main(int argc, char* argv[])
{
linkedList L1;
int n;
int val;
//初始化链表
if(!L1.initiate())
return 0;
cin>>n;//输入链表中数据个数
for(int i=0; i<n; i++) //输入n个数,并插入链表
{
cin>>val;
L1.insert(val);
}
cout << "Origin Length:" << L1.Length() << endl;//输出链表长度
cout << "data:" ;
L1.print();//打印链表
cin>>n;//输入需要删除的数据的位置
if (L1.remove(n,val))
{
//删除位置n的数据,并将删除的数据值放在val中
cout<<"Delete the data at position("<<n<<"):"<<val<<endl;
cout<< "New Length:" << L1.Length()<< endl;//输出链表长度
cout<< "data:" ;
L1.print();//打印链表
}
return 0;
}
【输入形式】
输入包括3行。
第一行是链表元素个数n。第二行为n个元素的值。第三行为拟删除的数据位置。
【输出形式】
输出格式不固定。具体参见样例。
【样例输入1】
4
1 2 3 4
2
【样例输出1】
Origin Length:4
data:1 2 3 4
Delete the data at position(2):2
New Length:3
data:1 3 4
【样例输入2】
2
100 -1
3
【样例输出2】
Origin Length:2
data:100 -1
pos > len, failed
【样例输入3】
8
8 7 6 5 4 3 2 1
0
【样例输出3】
Origin Length:8
data:8 7 6 5 4 3 2 1
pos <= 0, failed
2021-06-30
有理分数的四则算术运算符重载 .cpp
(有理数)创建一个名为 Rational 的类,用于对分数进行算术运算。编写一个程序来测试你的类。使用整数变量来表示类的私有实例变量——分子和分母。
提供一个构造函数,使该类的对象能够在声明时进行初始化。构造函数应以简化形式存储分数。分数 2/4 等价于 1/2,并将作为分子中的 1 和分母中的 2 存储在对象中。
如果没有提供初始值设定项,请提供默认值为 1 的无参数构造函数。
提供执行以下每个操作的公共方法:
a) 将两个有理数相加:相加的结果应以简化形式存储。
b) 两个有理数相减:相减的结果应以简化形式存储。
c) 将两个有理数相乘:相乘的结果应以简化形式存储。
d) 将两个有理数相除:相除的结果应以简化形式存储。
e) 以 a/b 的形式返回有理数的字符串表示形式,其中 a 是分子,b 是分母。
f) 以浮点格式返回有理数的字符串表示形式. (考虑提供格式化功能,类的用户能够指定小数点右侧的精度位数。)
【Sample output 1】
Enter numerator 1: 12
Enter denominator 1: 3
Enter numerator 2: 5
Enter denominator 2: 14
Enter precision: 3
a=4/1
b=5/14
a + b = 61/14 = 4.357
a - b = 51/14 = 3.643
a * b = 10/7 = 1.429
a / b = 56/5 = 11.200
【Sample output 2】
Enter numerator 1: 1
Enter denominator 1: 4
Enter numerator 2: 75
Enter denominator 2: 35
Enter precision: 1
a=1/4
b=15/7
a + b = 67/28 = 2.4
a - b = -53/28 = -1.9
a * b = 15/28 = 0.5
a / b = 7/60 = 0.1
Note: The red texts are inputed ,others are output texts.
Just use a space to seperate words
2021-06-30
文件的拷贝与排序.cpp
【问题描述】请编写一个程序,实现如下功能
a.txt文件中已经预先存储了float类型的一组数据,以空格分隔,数据的个数不确定。
从a.txt文件中读取数据,并将从小到大排序后的数据输出到b.txt文件
b.txt文件中数据以空格分隔
【输入形式】
输入文件名:a.txt
【输出形式】
输出文件名:b.txt
2021-06-30
内存块的文件读写.cpp
【问题描述】请编写一个程序,实现如下功能
1、定义结构体student, 包括stu_id,score 2个变量。其中stu_id是一个short型变量,score为short型变量。
2、从键盘输入学生个数n及n个学生的数据,存储在new创建的数组a中
3、使用write函数,以二进制形式,将a数组中存放的n个学生一次写入out.txt文件中(不要使用循环)
4、使用read函数,以二进制形式,使用循环方式,从out.txt中每次读出一个学生信息,存储于new创建的数组b中
5、使用write函数,将b数组中存放的n个学生信息添加在文件out.txt的尾部,要求一次写入out.txt文件中(不要使用循环)
【输入形式】
输入第一行是整数,表示有n个学生
输入第2到n+1行是学生信息,每行表示一个学生的stu_id,score
【输出形式】
输出文件名:out.txt,其中包括2次输出信息
【输入范例】
2
1011 90
1012 68
【输出范例】
无
2021-06-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人