Был код, калькулятор римских и арабских чисел. Нужно его преобразовать, чтобы был в 3 файла main.cpp
, class.cpp
и class.h
. Я вроде что-то пытался сделать. Ну собственно классы пихал в заголовочный, функцию из int main
в class.cpp
, а в main.cpp
оставлял только вызов этой функции. В class.cpp
есть строчка Number::Number()
, на которую собственно и ругается программа, что-то вроде функция уже имеет текст реализации.
main.cpp
#include <iostream>
#include "class.h"
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
class Number * calc;
calc = new Number();
getchar();
delete calc;
system("pause");
return 0;
}
class.cpp
#include "class.h"
#include <iostream>
#include <stdlib.h>
#include <string.h>
Number::Number()
{
Number *l, *r;
char x[256], y[256], oper;
int rezult;
cin >> x >> oper >> y;
if (x[0] >= '0' && x[0] <= '9')
l = new ArabicNumber(x);
else
l = new RomanNumber(x);
if (y[0] >= '0' && y[0] <= '9')
r = new ArabicNumber(y);
else
r = new RomanNumber(y);
switch (oper)
{
case '+':
rezult = l->getValue() + r->getValue();
break;
case '-':
rezult = l->getValue() - r->getValue();
break;
case '*':
rezult = l->getValue() * r->getValue();
break;
case '/':
rezult = l->getValue() / r->getValue();
break;
}
cout << l->getValue() << ' ' << oper << ' ' << r->getValue() << " = " << rezult << endl;
};
class.h
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
class Number
{
public:
Number()
{
value = 0;
}
int getValue() const
{
return value;
}
protected:
int value;
};
class RomanNumber : public Number
{
public:
RomanNumber(const char *c)
{
if (strcmp(c, "I") == 0)
value = 1;
else if (strcmp(c, "II") == 0)
value = 2;
else if (strcmp(c, "III") == 0)
value = 3;
else if (strcmp(c, "IV") == 0)
value = 4;
else if (strcmp(c, "V") == 0)
value = 5;
else if (strcmp(c, "VI") == 0)
value = 6;
else if (strcmp(c, "VII") == 0)
value = 7;
else if (strcmp(c, "VIII") == 0)
value = 8;
else if (strcmp(c, "IX") == 0)
value = 9;
else if (strcmp(c, "X") == 0)
value = 10;
}
};
class ArabicNumber : public Number
{
public:
ArabicNumber(const char *c)
{
value = atoi(c);
}
};
Ну и что вы привели в качестве кода? Вполне нормально компилируемый текст. С единственной проблемой - если oper
будет неверным - rezult
будет содержать не пойми что.
Откуда же нам знать, какие ошибки вы наделали при разделении текста на части?..
Скорее всего, оставили в заголовочном файле определение
class Number
{
public:
Number()
{
value = 0;
}
Но при этом зачем-то в .cpp-файле еще раз записали определение Number::Number()
.
Но чтоб отвечать уверенно - надо видеть соответствующий текст.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, подскажите пожалуйста, что я делаю не так? Хочу создать структуру из двух байтов и указателя на функцию, прикомпиляции выдает...
Помогите пожалуйста разобраться в данной ошибкеСам еще только учусь, поэтому потратил большое количество времени, пытаясь разобраться в этом
Имеется проект в C++ Builder, также имеется файл форматаpas содержащий довольно большое количество нужного кода