6-5 时间相加 (30分)

设计一个时间类,包含时、分、秒私有数据成员,并重载加法操作符实现两个时间的相加。时间限制为小时0到23,分钟0到59,秒0到59。输出格式为小时:分钟:秒。题目强调构造函数也需要重载。
摘要由CSDN通过智能技术生成

设计一个时间类,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现2个时间的相加。要求: (1)小时的时间范围限制在大于等于0;(2)分的时间范围为059分;(3)秒的时间范围为059秒。

#include <iostream>
using namespace std;
class Time {
   
private:
 int hours,minutes, seconds;
public:
 Time(int h=0, int m=0, int s=0);
 Time operator + (Time &)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于C语言函数设计的问题,需要设计两个函数,一个用于计算两个一元多项式的乘积,另一个用于计算两个一元多项式的和,并按照指定的格式输出结果。 函数定义应该如下所示: ```c void multiply(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2); void add(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2); ``` 其中,multiply函数用于计算两个多项式的乘积,coef1和exp1是第一个多项式的系数和指数,len1是第一个多项式的项数;coef2和exp2是第二个多项式的系数和指数,len2是第二个多项式的项数。函数应该在原数组上计算乘积,并将结果存储在数组中。乘积多项式的项数应该等于两个多项式项数之和。 add函数用于计算两个多项式的和,参数与multiply函数相同。函数应该在原数组上计算和,并将结果存储在数组中。和多项式的项数应该等于两个多项式项数之和。 以下是函数的实现: ```c void multiply(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2) { int i, j; int coef[len1 + len2], exp[len1 + len2]; int len = 0; for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { coef[len] = coef1[i] * coef2[j]; exp[len] = exp1[i] + exp2[j]; len++; } } for (i = 0; i < len; i++) { for (j = i + 1; j < len; j++) { if (exp[i] < exp[j]) { int tmp = coef[i]; coef[i] = coef[j]; coef[j] = tmp; tmp = exp[i]; exp[i] = exp[j]; exp[j] = tmp; } } } for (i = 0; i < len; i++) { if (i > 0 && exp[i] == exp[i - 1]) { coef[i - 1] += coef[i]; coef[i] = 0; } } printf("%d %d", coef[0], exp[0]); for (i = 1; i < len; i++) { if (coef[i] != 0) { printf(" %d %d", coef[i], exp[i]); } } printf("\n"); } void add(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2) { int i = 0, j = 0; int coef[len1 + len2], exp[len1 + len2]; int len = 0; while (i < len1 && j < len2) { if (exp1[i] > exp2[j]) { coef[len] = coef1[i]; exp[len] = exp1[i]; i++; } else if (exp1[i] < exp2[j]) { coef[len] = coef2[j]; exp[len] = exp2[j]; j++; } else { coef[len] = coef1[i] + coef2[j]; exp[len] = exp1[i]; i++; j++; } len++; } while (i < len1) { coef[len] = coef1[i]; exp[len] = exp1[i]; i++; len++; } while (j < len2) { coef[len] = coef2[j]; exp[len] = exp2[j]; j++; len++; } printf("%d %d", coef[0], exp[0]); for (i = 1; i < len; i++) { if (coef[i] != 0) { printf(" %d %d", coef[i], exp[i]); } } printf("\n"); } ``` multiply函数遍历两个多项式的所有项,计算乘积,并将结果存储在临数组中。然后,按照指数递降的顺序排序,并将指数相同的项系数相加。最后,按照指定格式输出结果。 add函数使用归并排序的思想,将两个多项式按照指数递降的顺序合并。如果某个项的系数为0,则不需要输出这个项。最后,按照指定格式输出结果。 使用这两个函数的示例代码如下: ```c #include <stdio.h> void multiply(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2); void add(int coef1[], int exp1[], int len1, int coef2[], int exp2[], int len2); int main() { int coef1[1000], exp1[1000]; int coef2[1000], exp2[1000]; int len1, len2; int i; scanf("%d", &len1); for (i = 0; i < len1; i++) { scanf("%d%d", &coef1[i], &exp1[i]); } scanf("%d", &len2); for (i = 0; i < len2; i++) { scanf("%d%d", &coef2[i], &exp2[i]); } multiply(coef1, exp1, len1, coef2, exp2, len2); add(coef1, exp1, len1, coef2, exp2, len2); return 0; } ``` 该程序读入两个多项式的系数和指数,调用multiply和add函数计算乘积和和,并按照指定格式输出结果。 输入样例: ``` 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 ``` 输出样例: ``` 12 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 3 5 20 3 4 -7 3 1 -2 ``` 其中,第一个输出是乘积多项式,第二个输出是和多项式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值