Форум программистов, компьютерный форум CyberForum.ru

Запихнуть в vector<int>, char? - C++

Восстановить пароль Регистрация
 
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
27.09.2013, 23:18     Запихнуть в vector<int>, char? #1
Всем доброго времени суток!
Вот решил написать программу, которая переводила бы число из десятичной системы счисления в шеснадцатиричную систему. Столкнулся с проблемой. Т.к. в шеснадцатиричной системе помимо цифр есть ещё и буквы, возник вопрос, как в векторный массив типа int можно поместить переменную типа char?

Или можно использовать не vector, а что-то другое, но суть в том, что память должна будет выделяться денамическим путём.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 23:18     Запихнуть в vector<int>, char?
Посмотрите здесь:

C++ accumulate к vector<pair<int, int>>
C++ vector < vector < pair<int,int> > > g
C++ Подскажите пожалуйста с int main(int argc, char*argv[])
C++ set_difference(vector<pair<int,int>>, vector<int>>
C++ Как в char запихнуть переменную?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 23:22     Запихнуть в vector<int>, char? #2
Зачем vector <int>? Опишите, как перевод делаете и зачем нужен вектор.
Dmitriy_M
1294 / 1175 / 104
Регистрация: 20.03.2009
Сообщений: 4,208
Записей в блоге: 11
27.09.2013, 23:27     Запихнуть в vector<int>, char? #3
Leonman, char и int интегральные типы, разница между ними лишь в размере.
C++
1
2
3
const char *str = "hello";
std::vector<int> vec (5,0);
vec[2] =  str[2];
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 23:37     Запихнуть в vector<int>, char? #4
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Leonman, char и int интегральные типы, разница между ними лишь в размере.
C++
1
2
3
const char *str = "hello";
std::vector<int> vec (5,0);
vec[2] =  str[2];
Зачем тогда, вообще, vector <int>? Чтобы в него помещать char? vector <char> есть или string.
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
27.09.2013, 23:38     Запихнуть в vector<int>, char? #5
Leonman, можно воспользоваться манипулятором hex для отображения числа в шестнадцатеричной СС( а также oct для отображения числа восьмеричной СС ).
Вот пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <iomanip>
#include <vector>
 
using namespace std;
 
int main() {
 
    vector < int > ivec;
 
    // заполнили вектор числами 0, 10, 20, 30 .. 90
    for ( int i = 0; i < 100; i += 10 )
        ivec.push_back( i );
 
    // выводим в десятичном виде
    for ( vector < int >::const_iterator it = ivec.begin(); it != ivec.end(); ++it )
        cout << setw( 4 ) << *it;
 
    cout << endl;
 
    // выводим в восмеричном виде
    for ( vector < int >::const_iterator it = ivec.begin(); it != ivec.end(); ++it )
        cout << setw( 4 ) << oct << *it;
 
    cout << endl;
 
    // выводим в шестнадцатеричном виде
    for ( vector < int >::const_iterator it = ivec.begin(); it != ivec.end(); ++it )
        cout << setw( 4 ) << hex << *it;
 
    return 0;
}
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
27.09.2013, 23:48  [ТС]     Запихнуть в vector<int>, char? #6
alsav22,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int dec_to_hex(long int number, long int n, vector<int> hex_code)
{
    while (number >= 16)
    {
        if ((number - ((number / 16) * 16)) == 10)
            hex_code.push_back('A');
        if ((number - ((number / 16) * 16)) == 11)
            hex_code.push_back('B');
        if ((number - ((number / 16) * 16)) == 12)
            hex_code.push_back('C');
        if ((number - ((number / 16) * 16)) == 13)
            hex_code.push_back('D');
        if ((number - ((number / 16) * 16)) == 14)
            hex_code.push_back('E');
        if ((number - ((number / 16) * 16)) == 15)
            hex_code.push_back('F');
        if ((number - ((number / 16) * 16)) < 10)
            hex_code.push_back(number - ((number / 16) * 16));
        number /= 16;
    }
    if (n == 0)
     cout << "0";
    for(int i = hex_code.size()-1; i >= 0; i--)
        cout << hex_code[i];
    return 0;
}
Вот, что-то типо этого

Добавлено через 2 минуты
Dmitriy_M, немогли бы вы пояснить, что это значить vector<int> vec (5,0)? Конкретно меня интересует то что в фигурных скобках.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.09.2013, 23:48     Запихнуть в vector<int>, char? #7
Похоже автор путает символьный тип char со строковым.
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
27.09.2013, 23:50  [ТС]     Запихнуть в vector<int>, char? #8
UranFlex, Я более чем был уверен, что такой способ, но мой интерес состоит в том, что-бы реализовать данную задачу без вспомогательных встроенных манипуляторов.
Dmitriy_M
1294 / 1175 / 104
Регистрация: 20.03.2009
Сообщений: 4,208
Записей в блоге: 11
27.09.2013, 23:50     Запихнуть в vector<int>, char? #9
Цитата Сообщение от Leonman Посмотреть сообщение
что это значить vector<int> vec (5,0)?
вызов fill constructor
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.09.2013, 23:51     Запихнуть в vector<int>, char? #10
Leonman, а почему твоя функция называется dec_to_hex, хотя принимает переменную типа long. Неужели ты думаешь, что целочисленные переменные типа int long и.т.п. хранятся в десятичной системе???
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
27.09.2013, 23:57  [ТС]     Запихнуть в vector<int>, char? #11
Kuzia domovenok, Я дал такое название функции, потому что она должа это выполнять, перевод из 10-чной в 16-чную.

Добавлено через 3 минуты
Dmitriy_M, а я могу заносить таким же образом не константную переменную?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.09.2013, 00:14     Запихнуть в vector<int>, char? #12
Цитата Сообщение от Leonman Посмотреть сообщение
она должа это выполнять, перевод из 10-чной в 16-чную.
почему же она принимает число в двоичной системе?
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
28.09.2013, 00:22  [ТС]     Запихнуть в vector<int>, char? #13
Kuzia domovenok, почему в двоичной? в десятичной
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.09.2013, 00:34     Запихнуть в vector<int>, char? #14
С каких это пор компьютер оперирует десятичными числами?
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
28.09.2013, 00:37  [ТС]     Запихнуть в vector<int>, char? #15
Kuzia domovenok, непонимаю. Я передаю число в десятичной, а не в двоичной, допустить number = 200. Я передаю в функцию число 200, разве нет.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.09.2013, 00:43     Запихнуть в vector<int>, char? #16
все десятичные константы на этапе компиляции переводятся в двоичные коды.
Все вводимые пользователем числа. Преобразуются из десятичной системы в двоичную. А ты как думал работает cin>> ?? Его работа включает в себя получение строки из консоли, а затем "парсинг" строки, в зависимости от того, какой тип данных ожидает ввода. В конечном итоге, в ячейку памяти, где лежит переменная поступает именно что двоичное число. Хотя для программиста оно может означать хоть десятичное, хоть восьмеричное, хоть букву.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2013, 00:49     Запихнуть в vector<int>, char? #17
Цитата Сообщение от Leonman Посмотреть сообщение
Я передаю в функцию число 200
Число 200 - оно и в десятичной, и в двоичной, и в шестнадцатиричной, и в восьмиричной есть, только записывается по разному. Можно и так написать: namber = 0xC8. Передаёте переменную int, которой присвоено значение 200.
Цитата Сообщение от Leonman Посмотреть сообщение
которая переводила бы число из десятичной системы счисления в шеснадцатиричную
Числа никуда не переводятся, переводится запись числа (представление).
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
28.09.2013, 00:51  [ТС]     Запихнуть в vector<int>, char? #18
Kuzia domovenok, ладна, какое это имеет отношение к моему вопросу, а именно, можно ли записать в vector<int> char`ы.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2013, 00:58     Запихнуть в vector<int>, char? #19
Цитата Сообщение от Leonman Посмотреть сообщение
а именно, можно ли записать в vector<int> char`ы.
Уже показали, что можно (3 пост).

Добавлено через 2 минуты
Только не забывайте, что char - это тоже число (код символа).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 01:07     Запихнуть в vector<int>, char?
Еще ссылки по теме:

C++ Запись в vector<vector<char>>
Vector<unsigned char> в int C++
Сортировка vector<vector<int>> C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
borodat
Заблокирован
28.09.2013, 01:07     Запихнуть в vector<int>, char? #20
Цитата Сообщение от alsav22 Посмотреть сообщение
Числа никуда не переводятся, переводится запись числа (представление)
это называется двоично-десятичные преобразователи. Они "зашиты" в процессор.
Цитата Сообщение от Leonman Посмотреть сообщение
Kuzia domovenok, ладна, какое это имеет отношение к моему вопросу, а именно, можно ли записать в vector<int> char`ы.
Можно. Кресты ты же Си совместимы. С помощью указателей по адресам присваивать каждый байтик, только зачем всё это...

Добавлено через 1 минуту
Leonman, Занялся бы для начала архитектурой вычислительных систем, таких вопросов не возникло бы.
Yandex
Объявления
28.09.2013, 01:07     Запихнуть в vector<int>, char?
Ответ Создать тему
Опции темы

Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru