long r = 0;
for (int i = 0; i < 5; ++i){
r = r * 50;
r = r + arr;
}
Массив в число
Привет. Можно ли както массив выразить одним числом, всмысле что бы в одну переменную можно запихнуть последовательность цифр в массиве? язык си.
ЗЫ: рабочего примера под рукой нет. но реализация там довольно проста.
Ну, смотря какой массив и в какое число. Поконкретней нельзя?
из чего состоит массив? какого он размера? что тебе нужно получить в итоге: целое число, или быть может строку?
Цитата: bolt90
Привет. Можно ли както массив выразить одним числом, всмысле что бы в одну переменную можно запихнуть последовательность цифр в массиве? язык си.
Если чисел не много и они влезут в переменную, то можно... Если вспомню каким кастом это сделать, то напишу ;)
Предположим у тебя есть масив из 5 положительных чисел максимуальное значение которых - 49. Тебе надо их загнать в 32-битное целое. Проверяем так: от 0 до 49 есть 50 разных вариантов одного числа.
Поднимаем 50 в степень 5 (количество цифр) = 312500000
2 в степени 32 = 4294967296 что больше 312500000. Значит можно. Если меньше - нельзя.
Запихивать будем примерно так (я без компилятора пишу, проверь):
Код:
Код:
for (int i = 4; i >= 0; --i){
arr = r % 50;
r = r / 50;
r = r + arr;
}
arr = r % 50;
r = r / 50;
r = r + arr;
}
Все вышесказаное относилось к варианту когда надо возобновлять данные в масив. Если возобновлять не надо - можно использовать хеш
Вобщем ждем более подробных объяснений от автора ;)
[COLOR="Red"]Автор, помни! Не все люди обладают телепатическими способностями![/COLOR]
впринципе все поняли правильно (извиняюсь за неточность, спешил :o ), масив из n елементов (чисел диапозона 0-9) записать в виде целого числа (один елемент соответствует одному разряду)
посмотри справку по sscanf. Скорее всего тебе нужно это.
Код:
..
long result;
for( int i = 0; i < n; i++ )
{
result += arr[ i ] * pow( 10, ( n - i - 1) );
}
..
long result;
for( int i = 0; i < n; i++ )
{
result += arr[ i ] * pow( 10, ( n - i - 1) );
}
..
Честно скажу, не помню функцию возведения в степень в C - поэтому написАл pow - при необходимости, естсно, заменить!!
А вообще тема явно напрашивается в "Студентам"!!
Код:
long result;
for( int i = 0; i < n; i++ )
{
result = result*10+arr[ i ];
}
for( int i = 0; i < n; i++ )
{
result = result*10+arr[ i ];
}
Цитата: wanja
Можно обойтись и без pow
Код:
long result;
for( int i = 0; i < n; i++ )
{
result = result*10+arr[ i ];
}
for( int i = 0; i < n; i++ )
{
result = result*10+arr[ i ];
}
result забыли обнулить ;)
У тя лучше! :)