0

Есть код:

count += 1 * 4; //4  надо объенидить в единый (как?)...
count += 10 * 1; //14 при этих значениях мы бы получили число символов 14

count += 100 * 5;
count += 1000 * 4;
count += 10000 * 3;
count += 100000 * 2;
count += 1000000 * 1;
count += 10000000 * 1;
count += 100000000 * 1;
count += 1000000000 * 1; // а при этих значениях мы бы получили число символов 11112345            

Как объединить его вместе?

Я использовал такой метод:

count += 1 * 4 + 10 * 1 + 100 * 5 + 1000 * 4 + 10000 * 3 + 100000 * 2 + 1000000 * 1 + 10000000 * 1 + 100000000 * 1 + 1000000000 * 1;

Он верен или нет? Если нет, то как тогда? Заранее спасибо.

ixSci
  • 23,825
  • Было бы хорошо, если бы вы написали, для чего предназначен этот код – Dmi7ry May 16 '15 at 09:09
  • 1
    @Fluttershy-2013, вы что, хотите перевести строку в число с СС-10? Напишите понятней что хотите в конечном итоге, и что в вашем понимании означают загадочные слова "объединение в единый код". –  May 16 '15 at 09:18
  • этот код используется в этой кнопке http://ru.stackoverflow.com/questions/423956/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D1%81-%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BA%D0%B0%D0%BC%D0%B8-%D0%BA%D0%BE%D0%B4%D0%B0-%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B-%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%82%D0%BE%D1%80%D0%B0-%D0%B2-%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%BC-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5?noredirect=1#comment431496_423956 – Евгений May 16 '15 at 19:33

3 Answers3

3

Вот вам LINQ:

int[] digits = new[] { 5, 4, 3, 2, 1, 1, 1 };
int result = digits.Aggregate((num, nextdigit) => num * 10 + nextdigit);

Проверка: http://ideone.com/X8CZp7

VladD
  • 206,799
0

Цель вашего вопроса можно трактовать в разных смыслах, потому тяжело дать правильный ответ. Если вам нужно из отдельных значений разрядов получить одно число, одно из очевидных решений, которое приходит в голову - хранить эти разряды как массив и затем просто перемножить в цикле

int[] numbers = {1, 1, 1, 1, 2, 3, 4, 5};

int result = 0;

for (var i = 0; i < numbers.Length; ++i)
{
    result += numbers[i];
    if (i<numbers.Length-1) result *= 10;
}

Console.WriteLine(result);

Есть множество других решений этой задачи, но в таком виде оно понятно даже для тех, кто только начал изучать Шарп - алгоритм легко запомнить.

Dmi7ry
  • 782
0

Если я правильно понял, то классика - вот (набросал на C, но смысл тот же, "единый" код на все случаи жизни):

unsigned long string2dec( const char * s )
{
  unsigned long result = 0;
  unsigned decimals = 1;
  const char * ptr = s + strlen( s );
  while( --ptr >= s )
  {
    result += (decimals * (unsigned)(*ptr - '0'));
    decimals *= 10;
  }
  return result;
}