Как из числа сделать массив c
Перейти к содержимому

Как из числа сделать массив c

  • автор:

Как из числа сделать массив c

Задается число с клавиатуры. Не более 32000. Нужно разбить число на элементы и положить в массив. Ну пример:

a[0] = 3 a[1] = 2 a[2] = 0 a[3] = 0 a[4] = 0

Нужно именно в массив, т.к. с ничем другим я работать пока не умею. Помогите пожалуйста.
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388

Пусть пользователь вводит ‘число’ как строку. далее, Сами разберетесь, что делать

P.S — для проверки правильности введенного числа можете воспользоваться функцией atoi() — перевод строки в int-значение.

Пользователь
Регистрация: 26.05.2013
Сообщений: 15

Ситуация следующая. Создал переменную char a[6]. Далее ввожу с клавиатуры число, скажем 12345. С помощью функции atoi проверяю сумму. Но вот как разделить дальше число на части я так и не понял. Мне надо чтобы типы были int. Я пробую сделать так: объявляю int b и присваиваю int[0] = atoi(a[0]). Функция подсвечивает ошибку.

Изображения

PicPick_1.jpg (10.5 Кб, 80 просмотров)

Форумчанин
Регистрация: 25.09.2012
Сообщений: 182

Зачем усложнять себе жизнь, можно ведь просто писать в массив остатки от деления на 10, пока число != нулю. И не надо возится со строками.
Чтото типа:

int i = 0, mass[5]; int N = 32000; while(N != 0) < mass[i] = N % 10; N = N / 10; ++i; >

Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.

Последний раз редактировалось Че Гевара; 30.05.2013 в 21:19 .

Как из числа сделать массив c

Массив представляет набор однотипных данных. Формальное определение массива выглядит следующим образом:

тип_переменной название_массива [длина_массива]

После типа переменной идет название массива, а затем в квадратных скобках его размер. Например, определим массив из 4 чисел:

int numbers[4];

Число элементов массива также можно определять через константу:

const int n = 4; int numbers[n]; // содержит 4 элемента

Некоторые компиляторы (например, G++) также поддерживают установку размера с помощью переменных.

Данный массив имеет четыре числа, но все эти числа имеют неопределенное значение. Чтобы установить значения элементов массива, указываются фигурные скобки (инициализатор), внутри которых перечисляются значения для элементов массива:

int numbers[4] <>; //

В данном случае фигурные скобки пусты, поэтому все элементы массива получают нулевые значения.

Также мы можем указать конкретные значения для всех элементов массива:

int numbers[4] ;

В данном случае в памяти выделяется некоторая область из четырех ячеек по 4 байта (размер типа int), где каждая ячейка содержит определенный элемент массива:

Если значений в инициализаторе меньше, чем элементов в массиве, то значения передаются первым элементам, а остальные получают нулевые значения:

int numbers[4] ; //

Если значений в инициализаторе больше, чем элементов в массиве, то при компиляции возникнет ошибка:

int numbers[4] ; // ! Ошибка

Здесь массив имеет размер 4, однако ему передается 6 значений.

Если размер массива не указан явно, то он выводится из количества переданных значений:

int numbers[] ;

В данном случае в массиве есть 6 элементов.

При этом не допускается присвоение одному массиву другого массива:

int nums1[] ; int nums2[] = nums1; // ошибка

Индексы. Получение и изменение элементов массива

После определения массива мы можем обратиться к его отдельным элементам по индексу. Индексы начинаются с нуля, поэтому для обращения к первому элементу необходимо использовать индекс 0. Обратившись к элементу по индексу, мы можем получить его значение, либо изменить его. Например, получим второй элемент (индекс 1):

int n = numbers[1];

Изменение значения второго элемента:

numbers[1] = 123;

Например, получим и изменим значения элементов:

#include int main() < int numbers[4]; int first = numbers[0]; // получаем первый элемент std::cout 

При обращении по индексу следует учитывать, что мы не можем обратиться по несуществующему индексу. Так, если в массиве 4 элемента, то мы можем использовать индексы с 0 до 3 для обращения к его элементам. Использование любого другого индекса приведет к ошибке:

int numbers[4]; int forth = numbers[4]; // !Ошибка - в массиве только 4 элемента

Константные массивы

Если необходимо, чтобы нельзя было изменять значения элементов массива, то такой массив можно определить как константный с помощью ключевого слова const

const int numbers[4]; // numbers[1] = 23; // ошибка - значения элементов массива изменить нельзя

Длина массива

Длина массива не всегда бывает известна. Однако может потребоваться получить ее. Для этого можно использовать несколько способов. Первый способ, который пришел из языка С, представляет применение оператора sizeof :

#include int main() < int numbers[]; std::cout 

По сути длина массива равна совокупной длине его элементов. Все элементы представляют один и тот же тип и занимают один и тот же размер в памяти. Поэтому с помощью выражения sizeof(numbers) находим длину всего массива в байтах, а с помощью выражения sizeof(numbers[0]) - длину одного элемента в байтах. Разделив два значения, можно получить количество элементов в массиве.

Второй способ представляет применение встроенной библиотечной функции std::size() :

#include int main() < int numbers[]; int count = std::size(numbers); std::cout 

Перебор массивов

Используя циклы, можно пробежаться по всему массиву и через индексы обратиться к его элементам:

#include int main() < const int n = 4; int numbers[n] ; for(int i=0; i < n; i++) < std::cout >

Чтобы пройтись по массиву в цикле, надо знать его длину. Здесь длина задана константой n.вначале надо найти длину массива. И в цикле for перебираем все элементы, пока счетчик i не станет равным длине массива. В итоге на консоль будут выведены все элементы массива:

11 12 13 14

Другой пример - вычислим сумму элементов массива:

#include int main() < int numbers[]; int sum <>; for (int i <>; i < std::size(numbers); sum += numbers[i++]); std::cout 

Здесь длина массива вычисляется динамически - с помощью функции std::size() .

Перебор элементов в стиле for-each

Используем другую форму цикла for , которая предназначена специально для перебора последовательностей, в том числе для массивов

#include int main() < int numbers[4] ; for(int n : numbers) < std::cout >

При переборе массива каждый перебираемый элемент будет помещаться в переменную number, значение которой в цикле выводится на консоль.

Если нам неизвестен тип объектов в массиве, то мы можем использовать спецификатор auto для определения типа:

for(auto n : numbers)

Ввод значений массива с консоли

Подобно тому, как вводятся данные для отдельных переменных, можно вводить значения для отдельных элементов массива. Например, пусть пользователь вводит значения числового массива:

#include int main() < const int max ; // максимальная длина массива - не больше 6 чисел int numbers[max]; // массив для ввода чисел int i<>; // счетчик введенных чисел std::cout > numbers[i]; // вводим число i++; > // выводим массив for (i =0; i < max; ++i) < std::cout std::cout

Здесь в цикле сначала вводятся шесть чисел для каждого элемента массива, затем выводим этот массив.

Перевод числа в массив

Author24 — интернет-сервис помощи студентам

Здравствуйте. У такой меня вопрос: могу ли я перевести n-значное число в массив из n элементов. Например 123 = <1, 2, 3>.
Мне нужно для решения задачи по длинной арифметике на срр.
Или может лучше считать число каким-либо другим способом, чтобы потом поразрядно складывать с другим?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Перевод числа в массив.
В программе есть функция, которая принимает на вход целое число и символьный массив(строку). Нужно.

перевод из числа в прописной вид не массив
Здравствуйте товарищи!Нужна ваша помощь в исправлении кода. Что нужно мне изменить в коде что бы.

Функция: перевод числа с плавающей точкой в текст (массив char-ов)
Задача звучит так написать функцию перевода числа с плавающей точкой(double) в текст (массив.

Перевод числа из одной с.с. в другую, манипуляции с цифрами числа
Здравствуйте! У меня такая проблема. Есть программа, выполняющая определенные операции с.

Эксперт С++

8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562

Можно записать в char str[]. Функцией itoa(int val,char*buf, 10) //Вроде такой прототип.
Затем вычесть у каждого элемента строки '0'.
И записать это в int A[]. Может поможет

Добавлено через 3 минуты

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include #include int main() { char Str[255]; int Arr[255], Val=0; Val=345; itoa(Val, Str, 10); for(int i=0;istrlen(Str);i++) { Str[i]=Str[i]-'0'; Arr[i]=Str[i]; std::cout<"Arr: " [i] <'\n'; } return 0; }

113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
int n=0; int temp; while (x>0) { mas[n]= x%10; x= x/10; n++; } for (int i=0; in/2; i++) { temp= mas[i]; mas[i]= mas[n-i-1]; mas[n-i-1]= temp; }

Регистрация: 02.07.2010
Сообщений: 19
Все работает, но когда число большое например 16854684351461, он выводит 0. Почему.
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
А не слишком ли большое число для int
Регистрация: 02.07.2010
Сообщений: 19

В том то и дело. Мне надо вводить цифры от 0 до 10^100. Потом поразрядно складывать с таким же большим числом. Ну длинная арифметика. Я делал как то сумму массивов. получилось, теперь просто числа даны большие, не могу придумать

113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
kzht91, сразу считывай в массив да и все
вот как считать с файла

1 2 3 4
char str[1000]; fscanf(f, "%s", str); for(i=0; istrlen(str); i++) mas[i]= str[i]-'0';

Регистрация: 02.07.2010
Сообщений: 19

Во спасибо!)))) Заработало!)))

Добавлено через 4 часа 47 минут
Блин весь мучался, никак не могу написать код, уже сообразил вроде, но какие то ошибки выходят. Помогите написать эту программу. Это A+B, где А и В не превышают 10^100. Буду признателен.

Эксперт С++

8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
Можешь использовать long long тип. Или скачать библиотеку для длинных чисел
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
kzht91, где хранится длина массива?
ии для таких целей лучше хранить число задом наперед
Регистрация: 02.07.2010
Сообщений: 19

Ну для того чтобы складывать поразрядно и начинать с единиц, т.е. с конца массива

Добавлено через 1 час 22 минуты

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
#include #include #include using namespace std; int main() { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); char sa[102] = {0}, sb[102] = {0}; int i, ma[102], mb[102], r[102] = {0}, str; cin >> sa >> sb; if(strlen(sa) > strlen(sb)) str = strlen(sa); else str = strlen(sb); for(i=0; istr; i++) ma[i] = sa[i] - '0'; for(i=0; istr; i++) mb[i] = sb[i] - '0'; for(i=0; istr; i++) cout  [i]; cout  ; for(i=0; istr; i++) cout  [i]; cout  ; for(i=str-1; i>=0; i--) { r[i] = ma[i] + mb[i]; if(r[i] > 9) { r[i] = r[i]%10; r[i-1]++; } } for(i=0; istr; i++) { cout  [i]; } }

Объясните в чем ошибка. Это сумма чисел, но почему то не пашет
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Бинарные числа! Перевод простого числа в бираное и расчет.
Здравствуйте!Я понимаю, что моя просьба банальна, но я правда не могу никак разобраться с бинарными.

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа.

перевод числа
подскажите как перевести в 10ую систему число которое записано в двух ячейках массива : a=10; a=99.

Или воспользуйтесь поиском по форуму:

Как разбить число на массив числел?

P.s. - Или вообще использовать без вычислений любое число , например вытянуть 3е число.

  • Вопрос задан более двух лет назад
  • 4581 просмотр

Комментировать
Решения вопроса 3

using System.Linq;
string str="12345";
int[] numbers = str.Select(x => int.Parse(x.ToString())).ToArray();

Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать

Zoominger

System Integrator

Debug.Log("ci = > " + ci);
Debug.Log("[0] = > " + arrInt[0]);
Debug.Log("[1] = > " + arrInt[1]);
Debug.Log("[2] = > " + arrInt[2]);
Debug.Log("[3] = > " + arrInt[3]);
Debug.Log("[4] = > " + arrInt[4]);

Выводите string.Join(", ", yourArray).
Ну или через for.
Ответ написан более двух лет назад
Нравится 1 1 комментарий

Zefirot

Zefirot @Zefirot Автор вопроса

А зачем мне объединять? Мне наоборот нужно число разбить на массив чисел.
Или вы меня не так поняли или я вас.
дебагами я просто результат показывал что мне нужно.
Есть целое число int из него нужно сделать массив int[] , ну или как-то если можно просто достать любое нужное число из всего числа, то есть из числа 12345 достать 3 из середины.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *