Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь по C#

Тоня Мельникова Профи (670), на голосовании 9 лет назад
Нужно написать программу, которая считывает сначала число в 10ой системе счисления, затем переводит его в 2ую. После нужно посчитать кол-во единичных битов. Все это без единого цикла (!). Знаю, что можно число перевести в двоичную так: string boolcode = Convert.ToString(a,2) или вместо string - int и int32. И на этом моменте я застреваю. Пытаюсь просто перевести и вывести получившееся число, и ничего не получается. Помогите, люди:)
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (427458) 9 лет назад
Переведи в строку указанным методом, затем разбей строку на массив, затем при помощи LINQ-запроса посчитай единички в массиве. Точный код не скажу, у меня тут студии нет.
Тоня МельниковаПрофи (670) 9 лет назад
я вот даже не знаю, можно ли массивы, мы их по идее не проходили, так что и их использовать нельзя: (
Jurijus Zaksas Искусственный Интеллект (427458) Строка - массив сама по себе, так что не стесняйся. LINQ вы тоже ведь не проходили.
... Гений (84859) 9 лет назад
Ну сходу в голову пришли такие конструкции:

1: Рекурсия

2: Split. Т. к. известно, что у нас могут быть только 1 и 0, то можно разбить строку по 1 и посчитать количество таких подстрок
public static void Main (string[] args)
{
int i = int.Parse (Console.ReadLine ());
Console.WriteLine (Convert.ToString(i,2).Split ('1').Length-1);
}

3: В Char - Array и выборка всех элементов = '1'
public static void Main (string[] args)
{
int i = int.Parse (Console.ReadLine ());
Console.WriteLine (Array.FindAll (s.ToCharArray (), x => x == '1').Length);
}

4: Т. к. строка это Enumerable - можно сделать список, удалить все 0 и получить размер
using System.Collection.Generic;
public static void Main (string[] args)
{
int i = int.Parse (Console.ReadLine ());
List<char> l = new List<char> (s);
l.RemoveAll(x=> x=='0');
Console.WriteLine(l.Count);
}
...Гений (84859) 9 лет назад
Не успел дописать:
Рекурсия:

protected static int Count(int iValue) {
if (iValue != 0) {
int b = iValue & 1;
iValue >>= 1;
return b + Count (iValue);
}
return 0;
}

public static void Main (string[] args)
{
int i = int.Parse (Console.ReadLine ());
Console.WriteLine(Count(i));
}
Похожие вопросы