题目描述
设计一个程序实现两个任意长的整数(包括正数和负数)、任意精度实数的乘除运算,其中以“-”号开头的为负数。
输入
第一行为一个数字n,表示待计算的组数。接下来为3n行内容,每组内容有3行,第一行表示做乘法还是除法,第二、三行为两个数字,每次取一组内容来计算。
输出
共有n行,每行要换行,小数未尾不保留0,若小数点后都为0,则不要小数点。
小数结果末尾最多保留10位小数,四舍五入,除数绝对值小于10^(-6)则报ERROR。
一次样例输入
3
*
12,345,678,901,234,567,898,123,456,789,012,345,678,981,234,567,890
12,345,678,981,234,567,898,123,456,789,012,345,678,981,234,567,890
/
1,234.567890123456789812
0.0000000000123
/
66,666,666,666,666,666,666,666,666,666,666.6666666666
-2
一次样例输出
152,415,787,532,388,367,504,953,515,625,666,819,450,083,828,733,757,049,236,500,533,455,762,536,198,787,501,905,199,875,019,052,100
ERROR
-33,333,333,333,333,333,333,333,333,333,333.3333333333
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int data;
Node *next;
Node():next(nullptr){}
Node (int data):data(data),next(nullptr){}
Node (const Node &temp):data(temp.data),next(nullptr){}
};
class LinkList
{
public:
Node *head;
int length = 0;
LinkList()
{
head = new Node();
}
~LinkList()
{
while(head != nullptr)
{
Node *p = head->next;
free(head);
head = p;
}
}
void insert(const Node &cache)
{
Node *temp = new Node(cache);
temp->next = head-&