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

Как считать "длинное число" в массив? - C++

Восстановить пароль Регистрация
 
Konigin
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 29
16.10.2016, 16:07     Как считать "длинное число" в массив? #1
Объясните, пожалуйста, как считать "длинное число" в массив a, где длинна числа хранятся в переменных size.

Насколько я понимаю, число будет заноситься в динамический массив. И как же его считать число по цифрам? Чтобы число 123 получилось a = {1, 2, 3}. И какой при этом будет идентификатор size, если длинна числа будет меняться от того, насколько длинное число я введу? Просто как можно больше? Я не понимаю...

Добавлено через 2 часа 41 минуту
Смотрите, я сделать это так:
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
33
34
#define size 128
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    char _a[size], _b[size];
 
    cout << ("Введите a: ");
    gets_s(_a);
    cout << ("Введите b: ");
    gets_s(_b);
 
    int size_a = strlen(_a);
    int size_b = strlen(_b);
 
    int *a = new int[size_a];
    int *b = new int[size_b];
 
    for (int i = 0; i < size_b; i++)
    {
        cout << a[i] << " = " << _a[i] << endl;
        a[i] = _a[i] - 0x30;
    }
 
    for (int i = 0; i < size_b; i++)
        {
        cout << b[i] << " = " << _b[i] << endl;
        b[i] = _b[i] - 0x30;
    }
 
    cout << a << endl;
    cout << b << endl;
Вроде все норм, но вот в а и b находится какой-то мусор. А в циклах присваивается все правильно. Памагити!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2016, 16:07     Как считать "длинное число" в массив?
Посмотрите здесь:

C++ Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка"
Как сделать, чтобы появлялось сообщение "Массив не создан", если не задано положительное число ранга матрицы C++
Символьный массив: проверить, чтобы после каждого вхождения "1" шло парное вхождение "0" C++
C++ Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное
C++ Вывести на экран монитора число с наименованием "год","года", "лет"
C++ Есть числа в файле "student.txt". Нужно считать их в массив и вычислить минимальный элемент массива
C++ Как считать символ "^"?
Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
obivan
Падаван С++
 Аватар для obivan
171 / 157 / 41
Регистрация: 11.11.2014
Сообщений: 588
Завершенные тесты: 1
16.10.2016, 16:17     Как считать "длинное число" в массив? #2
Konigin,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> resultArray;
    int value = 1234;
    do {
        resultArray.push_back(value % 10);
        value /= 10;
    } while(value != 0);
    
    return 0;
}
Konigin
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 29
16.10.2016, 16:18  [ТС]     Как считать "длинное число" в массив? #3
Вот скрин:

ЗЫ: Я тут строку разворачиваю. Не спрашивайте зачем)
Миниатюры
Как считать "длинное число" в массив?  
obivan
Падаван С++
 Аватар для obivan
171 / 157 / 41
Регистрация: 11.11.2014
Сообщений: 588
Завершенные тесты: 1
16.10.2016, 16:28     Как считать "длинное число" в массив? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
если нужно хранить в char то вот эту строку переписать вот так
C++
1
resultArray.push_back(static_cast<char>(value % 10 + 48));
ну и вектор типа чар

Добавлено через 2 минуты
ну а у вас мусор потому что вы в цикле, сначала выводите значение, а потом записываете его в массив
C++
1
2
3
тут 
cout << a[i] << " = " << _a[i] << endl;
a[i] = _a[i] - 0x30;
и тут
C++
1
2
cout << b[i] << " = " << _b[i] << endl;
b[i] = _b[i] - 0x30;
поменяйте строки меcтами

Добавлено через 2 минуты
в векторе кстати еще реверснуть значения надо, это делается вот так
C++
1
std::reverse(resultArray.begin(), resultArray.end());
Добавлено через 2 минуты
а еще первый цикл у вас по size_b, а не size_a

Добавлено через 1 минуту
и в конце
C++
1
2
cout << a << endl;
cout << b << endl;
выведет адреса, если они вам конечно нужны, но я думаю вы хотели вывести значения массивов, это делает в цикле и поэлементно
Konigin
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 29
16.10.2016, 16:40  [ТС]     Как считать "длинное число" в массив? #5
Цитата Сообщение от obivan Посмотреть сообщение
ну а у вас мусор потому что вы в цикле, сначала выводите значение, а потом записываете его в массив
C++Выделить код
1
2
3
тут
cout << a[i] << " = " << _a[i] << endl;
a[i] = _a[i] - 0x30;
и тут
C++Выделить код
1
2
cout << b[i] << " = " << _b[i] << endl;
b[i] = _b[i] - 0x30;
поменяйте строки меcтами
Тут я убеждаюсь, что до присваивания в массиве находится мусор. Но после присваивания, когда я вывожу массив, выводится мусор, хотя должны выводится выше присвоенные цифры.

C++
1
2
cout << a << endl;
    cout << b << endl;
Цитата Сообщение от obivan Посмотреть сообщение
а еще первый цикл у вас по size_b, а не size_a
Спасибо

Цитата Сообщение от obivan Посмотреть сообщение
если нужно хранить в char то вот эту строку переписать вот так
resultArray.push_back(static_cast<char>(value % 10 + 48));
ну и вектор типа чар
Нет, хранить в int, но спасибо, учту)

Цитата Сообщение от obivan Посмотреть сообщение
и в конце
C++Выделить код
1
2
cout << a << endl;
cout << b << endl;
выведет адреса, если они вам конечно нужны, но я думаю вы хотели вывести значения массивов, это делает в цикле и поэлементно
Точно... А я думаю, что это мусор какой-то, а это адреса...
Yandex
Объявления
16.10.2016, 16:40     Как считать "длинное число" в массив?
Ответ Создать тему
Опции темы

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