using System;
using System.Collections.Generic;
using System.Linq;
namespace Prog
{
class Program
{
static void Main(string[] args)
{
List<double> array = new List<double>() { 7, 25, 4.5, 0, 17, 61, -10, 0, 1, -4, 22 };
// TASK 5
int positive, negative, zero;
var tmp = array.FindAll(x => x > 0);
positive = tmp.Count;
tmp = array.FindAll(x => x == 0);
zero = tmp.Count;
negative = array.Count - zero - positive;
Console.WriteLine($"Кол-во полож. элементов: {positive}\n\rКол-во нулевых элементов: {zero}\n\rКол-во отриц. элементов: {negative}");
// TASK 6
double prv = 1;
for (int i = 0; i < array.Count; ++i)
{
if (array[i] != 0)
{
prv *= array[i];
}
}
Console.WriteLine($"Произведение ненулевых элементов равно: {prv}");
Console.ReadKey();
}
}
}
Объяснение:
8D
Объяснение:
1) Решение по простому. Шестнадцатиричная система это 4 бита на один знак. У нас двоичная запись 10001101. Всего 8 бит. Значит младшие 4 бита это младшее шестнадцатиричное число, а старшие 4 бита это старшее число. Смотрим на первые 4 бита 1101 это 1*
+0*
+1*
+1*
=1*1+0*2+1*4+1*8=1+4+8=13(в десятичной)=D (A-10, B-11, C-12, D-13 в 16-ричной).
Смотрим на старшую четверку битов 1000=0*
+0*
+0*
+1*
=0+0+0+8=8.
Пишем старшую цифре потом младшую 8D.
2)Теперь решение как нужно делать правильно (для любого основания). 10001101=1*
+0*
+1*
+1*
+0*
+0*
+0*
+1*
=1*1+0*2+1*4+1*8+0*16+0*32+0*64+1*128=1+4+8+128=141 (это перевели в десятичную). Затем переводим в нужную нам 16-ричную (это основание 16 значит будем делить на 16). 141/16= 8,8125. Мы получили целую часть от деления - цифра 8. Она у нас будет старшей (если при первом делении получилось число больше основания т.е.16 нужно его еще разделить). Умножим 8 на основание и вычтим это число из первоначального. 141-8*16=141-128=13. Мы получили младший разряд. Переводим 13 в 16-ричную (как показал ранее А-10 и т.д.). Получили ответ 8D