Всем привет, помогите плз с задачкой по с++..:(
Суть:
1. Вводится тип данных.
2. Вводится система счисления (восьмеричная, десятичная, шестнадцатеричная итд.)
3. Вводятся данные в объявленной системе счисления.
4. Выводятся данные в бинарной системе счисления.
Пока что сделала просто вывод внутреннего представления чисел. Подскажите, на правильном ли я пути?а то преподаватель очень редко отвечает, а сроки поджимают.. Как сделать чтобы переводил каждый тип данных с введенной системой счисления в двоичную форму?
Все что смогла найти по теме, вот мой код:
#include <iostream>
#include <climits>
#include <cstdlib>
void print(const unsigned char* data, std::size_t size)
{
for(int i = 0; i < size; ++i)
{
unsigned char mask = 1 << (CHAR_BIT - 1);
while(mask)
{
std::cout << ((data[i] & mask) ? 1 : 0);
mask >>= 1;
}
std::cout << " ";
}
}
int prompt_menu_item_var()
{
int variant;
cout << "Select type\n" << endl;
cout << "1. Long int\n"
<< "2. Float\n"
<< "3. Char\n"
<< "4. Exit\n" << endl;
cout << ">>> ";
cin >> variant;
return variant;
}
int prompt_menu_item_not()
{
int notation;
cout << "Select notation (2,8,10,16)\n" << endl;
cout << "1. Long int\n"
<< "2. Float\n"
<< "3. Char\n"
<< "4. Exit\n" << endl;
cout << ">>> ";
cin >> notation;
return notation;
}
int main(int argc, char* argv[])
{
int notation,action;
action = prompt_menu_item();
notation = prompt_menu_item_not();
switch(action)
{
case 1:
{
std::cout << "Input a long int: " << std::flush;
long int i;
std::cin >> i;
print(reinterpret_cast<unsigned char*>(&i), sizeof(i));
std::cout << std::endl;
break;
}
case 2:
{
std::cout << "Input a float: " << std::flush;
float f;
std::cin >> f;
print(reinterpret_cast<unsigned char*>(&f), sizeof(f));
std::cout << std::endl;
break;
}
case 3:
{
std::cout << "Input a char: " << std::flush;
char c;
std::cin >> c;
print(reinterpret_cast<unsigned char*>(&c), sizeof(c));
std::cout << std::endl;
break;
}
default:
std::cout << "Invalid action" << std::endl;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей