将罗马数字转换成整数
来源:互联网 发布:烟台模具编程招聘 编辑:程序博客网 时间:2024/05/17 06:18
/***********************************************************************
给定一个罗马数字s,( I<=s<=MMMCMXCIX)(即1到3999),将罗马数字转换成整数。
如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5。
格式:
第一行输入一个罗马数字,接下来输出对应的整数。
提示:
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。
***********************************************************************/
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
int romanToInt(string s);
char compare( int temp1, int temp2 );
};
int Solution::romanToInt(string s)
{
int result = 0;
int len = s.size( );
int *data = new int[len];
for( int i = 0; i < len; i++ )
{
switch( s[i] )
{
case 'I':data[i] = 1;break;
case 'V':data[i] = 5;break;
case 'X':data[i] = 10;break;
case 'L':data[i] = 50;break;
case 'C':data[i] = 100;break;
case 'D':data[i] = 500;break;
case 'M':data[i] = 1000;break;
}
}
result = data[len-1];
for( int i = len - 1; i >= 1; i-- )
{
switch( compare( data[i], data[i-1] ) )
{
case '<':result = result + data[i-1];break;
case '=':result = result + data[i-1];break;
case '>':result = result - data[i-1];break;
}
}
return result;
}
char Solution::compare( int temp1, int temp2 )
{
if( temp1 < temp2 )
return '<';
if( temp1 == temp2 )
return '=';
if( temp1 > temp2 )
return '>';
}
int main( int argc, char *argv[] )
{
Solution temp;
int answear = temp.romanToInt( "MDCCCXCIX" );
cout<<"answear = "<<answear<<endl;
system( "pause" );
}
给定一个罗马数字s,( I<=s<=MMMCMXCIX)(即1到3999),将罗马数字转换成整数。
如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5。
格式:
第一行输入一个罗马数字,接下来输出对应的整数。
提示:
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。
***********************************************************************/
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
int romanToInt(string s);
char compare( int temp1, int temp2 );
};
int Solution::romanToInt(string s)
{
int result = 0;
int len = s.size( );
int *data = new int[len];
for( int i = 0; i < len; i++ )
{
switch( s[i] )
{
case 'I':data[i] = 1;break;
case 'V':data[i] = 5;break;
case 'X':data[i] = 10;break;
case 'L':data[i] = 50;break;
case 'C':data[i] = 100;break;
case 'D':data[i] = 500;break;
case 'M':data[i] = 1000;break;
}
}
result = data[len-1];
for( int i = len - 1; i >= 1; i-- )
{
switch( compare( data[i], data[i-1] ) )
{
case '<':result = result + data[i-1];break;
case '=':result = result + data[i-1];break;
case '>':result = result - data[i-1];break;
}
}
return result;
}
char Solution::compare( int temp1, int temp2 )
{
if( temp1 < temp2 )
return '<';
if( temp1 == temp2 )
return '=';
if( temp1 > temp2 )
return '>';
}
int main( int argc, char *argv[] )
{
Solution temp;
int answear = temp.romanToInt( "MDCCCXCIX" );
cout<<"answear = "<<answear<<endl;
system( "pause" );
}
0 0
- 将罗马数字转换成整数
- 整数转换成罗马数字
- 罗马数字转换成整数
- 整数转换成罗马数字
- 罗马数字转换成整数
- 整数转换成罗马数字
- 罗马数字转换成整数
- 罗马数字转换成整数
- 整数转换成罗马数字
- 罗马数字转换成整数
- 整数转换成罗马数字和罗马数字转换成整数
- 计蒜客整数转换成罗马数字
- 计蒜客罗马数字转换成整数
- 计蒜客 -- 罗马数字转换成整数
- 计蒜客 -- 整数转换成罗马数字
- 整数转换成罗马数字 python
- 计蒜客 整数转换成罗马数字
- 计蒜课:整数转换成罗马数字
- SOCKET.IO
- 宁当创业狼,不做打工狗,是男人就看看!
- 第8周项目2 加班费,要不要?
- 第八周项目三——多分段函数求值
- php单例模式
- 将罗马数字转换成整数
- First blog
- 让UILabel的文字顶部对齐
- Linux c编程 exec execl
- 第八周项目2 加班费,要不要
- Map集合 键值对 映射关系 Hashtable HashMap TreeMap keySet entrySet Map.Entry
- 第8周 项目4:个人所得税计算器
- 深入理解static
- 命名空间