преобразование римских цифр в десятичные

Эй, ребята, я думаю, что я действительно близок, но я не слишком уверен, как продолжить. На все вопросы, связанные с моей проблемой, ничего не дано. Ошибка, которую я получаю прямо сейчас, это

(33): error C2064: term does not evaluate to a function taking 1 arguments
(41): error C2064: term does not evaluate to a function taking 1 arguments

Заголовочный файл:

using namespace std;

class romanType
{
public:
void printRoman(char romanNum);
int printDecimal(int& total);
int convertRoman(int& total);
void setRoman(char& roman);

romanType();
romanType(char);

private:
char romanNum[6];
int decimal;
int total;
};

Реализация:

#include "stdafx.h"#include <iostream>
#include <iomanip>
#include "romanType.h"
using namespace std;

romanType::romanType(char)
{

};
void romanType::printRoman(char romanNum)
{
cout << "Here is your number in Roman Numeral form: " << romanNum << endl;
};

int romanType::printDecimal(int& total)
{
cout << "Here is your number in Decimal form: " << total << endl;
return total;
};

void romanType::setRoman(char& romanNum)
{

};
int romanType::convertRoman(int& total)
{
int len = 0;
len = strlen(romanNum);
int count[1];

for(int i = 0; i < len; i++)
{
switch(romanNum[i])
{
case 'M':
count[i] = 1000;
break;
case 'm':
count[i] = 1000;
break;
case 'D':
count[i] = 500;
break;
case 'd':
count[i] = 500;
break;
case 'C':
count[i] = 100;
break;
case 'c':
count[i] = 100;
break;
case 'L':
count[i] = 50;
break;
case 'l':
count[i] = 50;
break;
case 'X':
count[i] = 10;
break;
case 'x':
count[i] = 10;
break;
case 'V':
count[i] = 5;
break;
case 'v':
count[i] = 5;
break;
case 'I':
count[i] = 1;
break;
case 'i':
count[i] = 1;
break;
default:
cout << "Error.." << endl;
}
total = total + count[0];
}
return total;
};

Мой основной:

#include "stdafx.h"#include <iostream>
#include <iomanip>
#include "romanType.h"
using namespace std;

int main()
{
romanType r;

char romanNum;
char choice;
int decimal;
int total;

cout << "Hello! Please enter your Roman Numeral: " << endl;
cin >> romanNum;
cout << endl;r.setRoman(romanNum);
r.convertRoman(total);

cout << "Do you want the Roman Numeral or the Decimal?" << endl;
cout << "Press [D] for Decimal!" << endl << "Press [R] for Roman Numeral!" << endl;

cin >> choice;

if (choice == 'D' || choice == 'd')
r.printDecimal(total);
else if (choice == 'R' || choice == 'r')
r.printRoman(romanNum);
else
cout << "That wasn't the right button!" << endl;

system ("pause");
return 0;
}

Я уверен, что я на правильном пути. Было бы неплохо увидеть любые советы или рекомендации, касающиеся моих ошибок.

заранее спасибо

0

Решение

Просто бегло посмотрев код, я могу предложить посмотреть в окне отладки значения ваших переменных на каждом шаге. То, что я вижу, это две переменные, один тип символа с именем romanNum, и совершенно другая переменная, которая является массивом символов с именем romanNum. Это немного сбивает с толку, но может сработать, если вы запрашиваете у пользователя только один символ римскими цифрами, и тогда вам вообще не понадобится массив. В противном случае вы можете получить строку, а затем преобразовать ее в массив.

Начните там и посмотрите, поможет ли это.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]