一道C++程序!急用!

来源:百度知道 编辑:UC知道 时间:2024/09/27 18:19:29
写一个C++程序,把罗马数字转化为10进制的数字,就是一般的阿拉伯数字形式。但是在程序中,要用到overload(具体中文我也不知道怎么翻译,希望和中国教的说法一样),使输入和输出更加方便,意思就是overload“>>"和"<<",例子(friend istream& operator>>(istream&, className&))。这个程序大部分我已经做到,就是不懂怎么用overload。所以请在我的程序中在加入一个class extRomanType,去做罗马数字的运算。首先要求用户自己输入两个罗马数字,然后选择运算方法,接着把罗马数字化成阿拉伯数字的形式,最后做完加或减或乘或除之后再化成罗马数字的形式。(其中做减法时如果第一个数字小于第二个,要提示用户重新输入)。但是运算也要用到overload,overload"+""-""*""/"的运算使这些数学运算可以在罗马数字的状态下使用。
题目本身是英文,不是特别好翻译,大意如此,如果谁想看英文的题目可以留e-mail给我,我发去邮箱。希望帮我做的尽量完善一些。如果有哪个高手做好了请以附件形式发到我邮箱,mrobertm@126.com
因为急用,所以希望前辈们尽快,不胜感激!
已作的程序:

#include<iostream>
#include<cstdlib>
#include<vector>
#include<map>

using namespace std;

#define ROMAN 0
#define DECIMAL 1

class romanType
{
public:
romanType(){}
~romanType(){}
romanType(char* roman);
void print(int type= DECIMAL);
void operator=(char

你不是已经用了重载了吗..?
void romanType::operator=(char* roman)
这不就是重载运算符'='了

你再写个类似的就行了,比如
void romanType::operator+(char* roman);
void romanType::operator-(char* roman);
void romanType::operator*(char* roman);
void romanType::operator/(char* roman);
这个题目就是要写出上面几个,重载+ - * / 的运算符.
我看楼主应该都会的了.不行我做了发给你吧, :)
现在干活中,下午给你.
O,把原题发给我吧,邮箱是lichengbyd@sina.com

没心思帮你做啊

overload 的意思是 重载
STL用得不错啊~
我不是太懂罗马数字,不知道是不是那么转换的。

m_decimal= 0;一句我觉得应该放到第二个有参构造函数里去。
convert函数里有两个以i为循环变量的从0到len的for循环,我觉得可以整合为一个。
其他的觉得都可以。你愿意的话可以继续做大,重载+-*/等等运算符的。
void operator=(char* roman);你自己都会写的啊。这就是重载了赋值运算符。把等号换成+-*/什么的就好啊,那就是重载了运算符。或者换个参数表(类型 数量),就是对同一个函数名的重载啊。

为什么非要用友元函数?那破坏了类的封装性。
把friend+类名拿掉也可以用的。

上班中~~~~~~~~
留个脚印,来得及的话,晚上回去看看

昨天晚上就看见此题,我也是菜鸟,为了挑战下自己,便尝试做了下。
由于电脑遭小侄儿霸占玩游戏,所以现在才帮你完成。
首先我这个程序完成的功能很单一简单,并且界面可能并非你想要的。
由于罗马数字的规则:
Ⅰ(1)Ⅴ(5)Ⅹ(10)