using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace NoNamespace { internal static class Program { private static void Main() { Console.WriteLine("Введите n и m"); var n = int.Parse(Console.ReadLine()); var m = int.Parse(Console.ReadLine()); if ((n <= 0) || (m <= 0)) return;
var r = new Random(DateTime.Now.Millisecond);
Console.WriteLine(@"Task1"); var a = new int[n].ChangeEach(x => r.Next(100)); Console.WriteLine(a.Print()); Console.WriteLine(a.Where(x => x%2 == 1).Print()); Console.WriteLine();
Console.WriteLine(@"Task2"); var b = new int[n, m].ChangeEach(x => r.Next(-100, 100)); Console.WriteLine(b.Print()); Console.WriteLine(Task2(b).Print()); Console.WriteLine();
private static int[,] Task2(int[,] a) { var max = a.MaxIndex((x, y) => x > y); var maxv = a[max.Item1, max.Item2]; a[max.Item1, max.Item2] = a[0, 0]; a[0, 0] = maxv;
return a; } }
public static class Extensions { public static List<T> Where<T>(this T[,] array, Func<T, bool> filter) { if (filter == null) return null;
var list = new List<T>();
for (var i = 0; i < array.GetLength(1); i++) for (var j = 0; j < array.GetLength(0); j++) if (filter(array[i, j])) list.Add(array[i, j]);
return list; }
public static string Print<T>(this IEnumerable<T> a) { var enumerable = a as IList<T> ?? a.ToList(); if (!enumerable.Any()) return "Таких элементов нет";
var sb = new StringBuilder("Массив: "); foreach (var ae in enumerable) sb.Append($"{ae} ");
return sb.ToString(); }
public static T[,] ChangeEach<T>(this T[,] array, Func<T, T> mutator) { if (mutator == null) return array;
for (var i = 0; i < array.GetLength(1); i++) for (var j = 0; j < array.GetLength(0); j++) array[i, j] = mutator(array[i, j]); return array; }
public static T[] ChangeEach<T>(this T[] array, Func<T, T> mutator) { if (mutator == null) return array;
public static string Print<T>(this T[,] a) { if (a.LongLength == 0) return "Таких элементов нет";
var sb = new StringBuilder("Матрица: \n"); for (var i = 0; i < a.GetLength(1); i++) { for (var j = 0; j < a.GetLength(0); j++) sb.Append($"{a[i, j]} "); sb.AppendLine(); }
return sb.ToString(); }
public static Tuple<int, int> MaxIndex<T>(this T[,] array, Func<T, T, bool> comparer) { if (comparer == null) return new Tuple<int, int>(-1, -1);
var index = new Tuple<int, int>(0, 0);
for (var i = 0; i < array.GetLength(1); i++) for (var j = 0; j < array.GetLength(0); j++) if (comparer(array[i, j], array[index.Item1, index.Item2])) index = new Tuple<int, int>(i, j);
1) Для начала подсчитаем общее кол-во символов. 350 * 60 * 18 = 378000 символов Теперь подсчитаем информационный вес одного символа по формуле N = 2^i. 128 = 2^i i = 7 бит Теперь найдем информационный вес всех символов. 378000 * 7 = 2646000 бит = 323 Кбайт (приблизительно)
2) Найдем информационный вес 1 символа первого алфавита. N = 2^i 512 = 2^i i = 9 бит Найдем информационный вес 1 символа второго алфавита. N = 2^i 64 = 2^i i = 6 бит Найдем количество символов первого ( и 2 ) алфавита. 640Кбайт = 5242880 бит 5242880 / 9 = 58320 символов Теперь найдем информационный объем второго алфавита. 58320 * 6 = 349920 бит = 43 Килобайт ( приблизительно)