Задача на поиск в массиве количества единиц в двоичном коде - C#

Узнай цену своей работы

Формулировка задачи:

Нужно чтобы выводилось количество единиц в каждой строке. Примерно так: 58 -> 111010 -> 4 129 -> 10000001 -> 2 и т.д.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace bit2
{
    class Program
    {
        static void Main(string[] args)
        {
            int s = 0, i;
            const int n = 10;
            int[] a = new int[n];
            int[] bases = { 2 };
            Random rnd = new Random();
            for (i = 0; i < n; i++)
                a[i] = rnd.Next(0, 255);
            Console.WriteLine("Массив:");
            foreach (int r in a) Console.WriteLine(r);
            for (i = 0; i < n; i++) s += Convert.ToString(a[i], 2).Where(x => x == '1').Count();
            Console.WriteLine("Количество единиц = {0}", s);
            foreach (int baseValue in bases)
            {
                Console.WriteLine("\nДля проверки:");
                foreach (int r in a)
                    Console.WriteLine("{0,-15}\t->\t{1}", r, Convert.ToString(r, baseValue));
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

Решение задачи: «Задача на поиск в массиве количества единиц в двоичном коде»

textual
Листинг программы
        static void Count(int value, out int ones) {
            ones = 0;                        
            while (value != 0) {
                if ((value & 1) == 1) 
                    ones++;                                                   
                value = (value >> 1);
            }
        }
 
 
        static void Main(string[] args) {
 
            const int n = 10;
            int ones;
            Random rnd = new Random();
            int[] a = new int[n];
 
            for (int i = 0; i < n; i++) {
                a[i] = rnd.Next(0, 255);
                Count(a[i], out ones);
                Console.WriteLine("{0} -> {1} -> {2}", a[i], Convert.ToString(a[i], 2), ones);
            }
            Console.ReadKey();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы