Другие языки программирования и технологии
Помогите плизз с C++
На языке С++ написать программу, которая запрашивает число (положительное, отрицательное или ноль), разрядность типа данных и его вид - знаковый или беззнаковый. На выходе программы должно быть представление заданного числа в памяти компьютера.
Прототип может быть таким (отсутствует только проверка ошибок) : вместо размера + наличия знака указывается сразу тип C++
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <map>
using namespace std;
template < class TValue >
class Representer
{
public:
void GetBinaryRepresentation(string & result, istream & stream)
{
TValue value;
stream >> value;
GetBinaryRepresentation(result, value);
}
private:
void GetBinaryRepresentation(string & result, const TValue & value)
{
ostringstream stream;
const int byte_size = 8;
const int size = sizeof(value);
const unsigned char * bytes = reinterpret_cast< const unsigned char * >(&value);
for (int i = 0; i < size; i++)
{
const unsigned char mask = static_cast< unsigned char > (1);
for (int j = 0; j < byte_size; j++)
stream << ((bytes[ i ] >> j) & mask);
}
string stream_value = stream.str();
reverse(stream_value.begin(), stream_value.end());
result = stream_value;
}
};
struct IParser
{
virtual void Parse(string & representation, istream & stream) = 0;
virtual void Register(map< string, IParser * > & parsers) = 0;
};
template < class TValue >
class Parser : public IParser
{
private:
string _key;
Representer< TValue > _representer;
public:
Parser(const string & key)
: _key(key)
{
}
void Register(map< string, IParser * > & parsers)
{
parsers[_key] = this;
}
void Parse(string & representation, istream & stream)
{
_representer.GetBinaryRepresentation(representation, stream);
}
};
void main()
{
IParser * parsers[] =
{
new Parser< int >("int"),
new Parser< unsigned char >("unsigned char"),
new Parser< unsigned int >("unsigned int"),
};
const int parsers_count = _countof(parsers);
map< string, IParser * > parsers_map;
for (int i = 0; i < parsers_count; i++)
parsers[ i ]->Register(parsers_map);
string value_type;
cout << "Enter value type: ";
getline(cin, value_type);
IParser * parser = parsers_map[ value_type ];
cout << "Enter a value: ";
string representation;
parser->Parse(representation, cin);
cout << "Binary representation is: " << representation << endl;
for (int i = 0; i < parsers_count; i++)
delete parsers[ i ];
}
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <map>
using namespace std;
template < class TValue >
class Representer
{
public:
void GetBinaryRepresentation(string & result, istream & stream)
{
TValue value;
stream >> value;
GetBinaryRepresentation(result, value);
}
private:
void GetBinaryRepresentation(string & result, const TValue & value)
{
ostringstream stream;
const int byte_size = 8;
const int size = sizeof(value);
const unsigned char * bytes = reinterpret_cast< const unsigned char * >(&value);
for (int i = 0; i < size; i++)
{
const unsigned char mask = static_cast< unsigned char > (1);
for (int j = 0; j < byte_size; j++)
stream << ((bytes[ i ] >> j) & mask);
}
string stream_value = stream.str();
reverse(stream_value.begin(), stream_value.end());
result = stream_value;
}
};
struct IParser
{
virtual void Parse(string & representation, istream & stream) = 0;
virtual void Register(map< string, IParser * > & parsers) = 0;
};
template < class TValue >
class Parser : public IParser
{
private:
string _key;
Representer< TValue > _representer;
public:
Parser(const string & key)
: _key(key)
{
}
void Register(map< string, IParser * > & parsers)
{
parsers[_key] = this;
}
void Parse(string & representation, istream & stream)
{
_representer.GetBinaryRepresentation(representation, stream);
}
};
void main()
{
IParser * parsers[] =
{
new Parser< int >("int"),
new Parser< unsigned char >("unsigned char"),
new Parser< unsigned int >("unsigned int"),
};
const int parsers_count = _countof(parsers);
map< string, IParser * > parsers_map;
for (int i = 0; i < parsers_count; i++)
parsers[ i ]->Register(parsers_map);
string value_type;
cout << "Enter value type: ";
getline(cin, value_type);
IParser * parser = parsers_map[ value_type ];
cout << "Enter a value: ";
string representation;
parser->Parse(representation, cin);
cout << "Binary representation is: " << representation << endl;
for (int i = 0; i < parsers_count; i++)
delete parsers[ i ];
}
Я пока посижу в контактике, а задроты с ответов мэил. ру пусть пишут за меня программу.
И ведь нет бы, написала какая среда разработки, написала что у неё получилось. Нет, привыкли всё нахаляву.
Олег, ты мудак или кто? Оракл - это СУБД, а С++ -это ЯП. Ламерок.
И ведь нет бы, написала какая среда разработки, написала что у неё получилось. Нет, привыкли всё нахаляву.
Олег, ты мудак или кто? Оракл - это СУБД, а С++ -это ЯП. Ламерок.
разрешите приступить к выполнению?
есть!
есть!
забей на С юзай оракул
В пмяти компьютера всё хранится в виде 1 и 0. Тебе нужно всего лишь перевести твоё число в двоичную систему исчисления и ещ не забудь приписать к началу знаковый бит. 0 - это положительное число, а 1 - это отрицательное ( и то это при условии что ты не переводишь отрицательное число в ДК)
Например если у тебя тип данных short( размер - 16 бит) , тогда:
123 = 0000 0000 0111 1011
-123 = 1000 0000 0111 1011
Например если у тебя тип данных short( размер - 16 бит) , тогда:
123 = 0000 0000 0111 1011
-123 = 1000 0000 0111 1011
Похожие вопросы
- Помогите, лёгкий код C++
- помогите закончить код C++
- Помогите решить задачу c#
- Помогите срочняк!!! Забыл пароль от своего компа чё делать? Помогите плизз!!!
- Поможет ли знание C# в школе?
- Люди, можно ли поставить компьютер на таймер выключения,???Какие есть программы, или как, помогите плизз...
- Помогите плизз....в долгу не останусь....Кто знает Паскаль!!??
- где можно скачать за бесплано программу по которой можно делать видео? помогите плизз
- Нароод помогите плизз!)
- Помогите с задачей C#, пожалуйста