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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Konigin
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 30
#1

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

16.10.2016, 16:07. Просмотров 209. Ответов 4
Метки нет (Все метки)

Объясните, пожалуйста, как считать "длинное число" в массив 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++
Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и...

Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка" - C++
Есть проблема. Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: &quot;целое...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Game "Угадай число" как зделать запрет на "букви" ???? - C++
Привет всем кто решил помочь. Написал прогру, но есть проблемка, когда ввожу &quot;букву&quot; вся прога беситса как мне зделать так что б он...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку &quot;ввести в поток&quot; и &quot;вывести с потока&quot;, а также &quot;умножить...

Вывести на экран монитора число с наименованием "год","года", "лет" - C++
Прошу прогу в С++. Дано натуральное число n (n&lt;=100), определяющее в годах возраст человека. Составить программу, по которой на экран...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
obivan
Падаван С++
400 / 220 / 57
Регистрация: 11.11.2014
Сообщений: 766
Завершенные тесты: 2
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
Сообщений: 30
16.10.2016, 16:18  [ТС] #3
Вот скрин:

ЗЫ: Я тут строку разворачиваю. Не спрашивайте зачем)
Миниатюры
Как считать "длинное число" в массив?  
obivan
Падаван С++
400 / 220 / 57
Регистрация: 11.11.2014
Сообщений: 766
Завершенные тесты: 2
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
Сообщений: 30
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;
выведет адреса, если они вам конечно нужны, но я думаю вы хотели вывести значения массивов, это делает в цикле и поэлементно
Точно... А я думаю, что это мусор какой-то, а это адреса...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2016, 16:40
Привет! Вот еще темы с ответами:

Как сделать, чтобы появлялось сообщение "Массив не создан", если не задано положительное число ранга матрицы - C++
Добрый день. Подскажите, пожалуйста, как сделать, чтобы программа выдавала сообщение &quot;Массив не создан&quot; во всех случаях, за исключением...

Считать с файла информацию о команде "Название" "Город", количество побед, поражений, ничьих, забитых и пропущенных мячей - C++
Здравствуйте. Необходимо написать программу С++ : &quot;Считать с файла информацию о команде &quot;Название&quot; &quot;Город&quot;, количество побед, ...

Есть числа в файле "student.txt". Нужно считать их в массив и вычислить минимальный элемент массива - C++
помогите пожалуйста с программой в С++

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.10.2016, 16:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru