Помогиите работа с типами данных по C++

259
20 мая 2018, 22:40

Всем привет, помогите плз с задачкой по с++..:( Суть: 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; 
    }
}
READ ALSO
Открывается два виджета одновременно

Открывается два виджета одновременно

У меня есть 4 виджета : startWidget, mainWidget, student widget, teacherWidgetВ startWidget я выбираю который открыть student widget или teacherWidget и на заднем фоне у меня открыт mainWidget

234
Нужен ли тут конструктор копирования

Нужен ли тут конструктор копирования

Вообщем есть такое задание

250
ReaFile считать 0 байт

ReaFile считать 0 байт

Вопрос на теориюЕсть функция ОС ReadFile (https://msdn

192
Как установить флаги компилятор через cmake?

Как установить флаги компилятор через cmake?

столкнулся с проблемой, для компилирования программы надо указать gcc флаги -I -L -lТак вот не получается установить данные флаги в cmake

313