C/C++
Как записать int в массив посимвольно на c++?
Например, при вводе числа 12345 массив будет тоже Int и состоять из элементов: {1, 2, 3, 4, 5}
#pragma warning(disable:4996)
#include
#include
using namespace std;
char toChar(char ch) {
return ch + 48;
}
int main(int, char**, char**) {
int num;
//12345
cin >> num;
deque result;
while (num != 0) {
result.push_front(toChar(num % 10));
num /= 10;
}
for (auto& i : result) {
cout
вводите как символ сhar и проверяйте на цифру и сохряняйте
если по простому, но не сильно эффективно - sprintf и потом по массиву пройти и '0' отнять от каждого эл.
или через floor(log10(n))+1 вычислять длину массива и проходя с конца получать каждую цифру чрез % и /
или через floor(log10(n))+1 вычислять длину массива и проходя с конца получать каждую цифру чрез % и /
Так вот можно для натуральных n:
#include <iostream>
using namespace std; int main()
{ int i, len = 0, m, n, *a = new int [10];
cout << "n: "; cin >> n; m = n; while (m)
{ a[len] = m % 10; len++; m /= 10; }
int *A = new int [len]; m = len - 1;
for (i = 0; i <= len; i++) A[i] = a[m - i];
for (i = 0; i < len; i++) cout << A[i] << ' ';
delete [] a; }
То есть вводим n, заводим динамический массив a, в который записываем цифры числа n в обратном порядке (то есть, например, число 1234567890 сначала запишется в массив из десяти элементов {0,1,2,3,4,5,6,7,8,9}), потом массив а инвертируем в массив A, а массив а стираем за ненадобностью. Только вот для одной десятичной цифры использовать тип int, в котором 32 бита, слишком расточительно, потому что для этого вполне хватает и полбайта...
#include <iostream>
using namespace std; int main()
{ int i, len = 0, m, n, *a = new int [10];
cout << "n: "; cin >> n; m = n; while (m)
{ a[len] = m % 10; len++; m /= 10; }
int *A = new int [len]; m = len - 1;
for (i = 0; i <= len; i++) A[i] = a[m - i];
for (i = 0; i < len; i++) cout << A[i] << ' ';
delete [] a; }
То есть вводим n, заводим динамический массив a, в который записываем цифры числа n в обратном порядке (то есть, например, число 1234567890 сначала запишется в массив из десяти элементов {0,1,2,3,4,5,6,7,8,9}), потом массив а инвертируем в массив A, а массив а стираем за ненадобностью. Только вот для одной десятичной цифры использовать тип int, в котором 32 бита, слишком расточительно, потому что для этого вполне хватает и полбайта...
#include
#include
#include
using namespace std;
int main()
{
vector number;
char ch;
while ((ch = _getch()) != 13) //пока не нажали enter
{
if (ch >= '0' && ch
Похожие вопросы
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Strlen для int массивов.(Си)
- Помогите пожалуйста - создать 4 массива на c++
- C++\Работа с одномерными массивами: удаление, добавление, перестановка, поиск
- Можно ли через функцию memset записать число в элемент массива больше чем 255? (Си)
- Программа на C++ с переводом Char в Int и наоборот при переводе возвращает НИЧЕГО
- C++ одномерный массив
- C++ динамический массив
- C++ Нужен код c++ с массивов.
- Помощь с Массивами C++