Надо представить десятичное число в unsigned char и реализовать операции сложения. вычитания, умножения и деления.
Число вроде бы представил, но с операциями проблема. Выдает ошибку error C2664: 'int atoi(const char *)': cannot convert argument 1 from 'unsigned char [100]' to 'const char *'
в строчках
a = atoi(obj1.dec) + atoi(obj2.dec);
b = atoi(obj1.dec) - atoi(obj2.dec);
c = atoi(obj1.dec) * atoi(obj2.dec);
d = atoi(obj1.dec) / atoi(obj2.dec);
Насколько я понял это из-за того, что у меня объекты класс типа char* а само число unsigned char. Как избавиться это этой ошибки?
#include <iostream>
#include <string>
using namespace std;
class oper;
class decimal
{
unsigned char dec[100];
size_t size;
friend oper;
public:
decimal(char*);
};
decimal::decimal(char* get)
{
size = strlen(get);
for (int i = size - 1; i >= 0; i--, get++)
{
dec[i] = *get;// или просто dec[i] = *get;
cout << dec[i];
}
cout << endl;
}
class oper
{
unsigned char *slozh;
unsigned char *vich;
unsigned char *del;
unsigned char *umn;
public:
oper(decimal, decimal);
};
oper::oper(decimal obj1, decimal obj2)
{
char* sl;
char* vi;
char* de;
char* um;
int a, b, c, d;
a = atoi(obj1.dec) + atoi(obj2.dec);
b = atoi(obj1.dec) - atoi(obj2.dec);
c = atoi(obj1.dec) * atoi(obj2.dec);
d = atoi(obj1.dec) / atoi(obj2.dec);
sl = itoa(a);
vi = itoa(b);
de = itoa(c);
um = itoa(d);
}
int main()
{
//cout << "Vvedite 2 chisla: " << endl;
//char* a;
//char* b;
//a = b = NULL;
//cin >> a >> b;
//decimal d1(a);
//decimal d2(b);
decimal a = "123321";
decimal b = "123456";
oper o(a, b);
system("pause");
return 0;
}
само задание:
Можно просто пойти по пути приведения:
a = atoi((char*)obj1.dec) + atoi((char*)obj2.dec);
b = atoi((char*)obj1.dec) - atoi((char*)obj2.dec);
c = atoi((char*)obj1.dec) * atoi((char*)obj2.dec);
d = atoi((char*)obj1.dec) / atoi((char*)obj2.dec);
Но!
Зачем вам вообще unsigned char dec[100];
? Почему он должен быть unsigned
? Лично я не вижу ни одной для этого причины, зато сразу несколько - для char dec[100];
. Вам не нужно будет выполнять приведение типов, в dec[i] = *get;
будет однотипное присваивание (кстати, а завершить строку нулевым символом вы не хотите?). Так что подумайте о том, чтоб просто убрать unsigned
...
Да, и itoa
у вас вызывается не так, как нужно. Но это уже второй вопрос :) - как и функционирование программы (я его не смотрел).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я написал функцию подсчета ветвей - branches(TNode*&, int)Работает почти исправно, но если ввести несуществующую вершину, то выдает просто значение...
Как вывести в файл значения целочисленных переменных x,y,z (здесь z - количество часов, y - количество минут, x - количество секунд) в формате hh:mm:ss...
Я правильно понимаю, что: Библиотека - это набор функций ? Заголовочный файл - это набор прототипов нужных функций из библиотеки ? Стандартная...
Для чего может понадобиться такая конструкция и почему при запросе 0 байт возвращается указатель