//Първа задача using System; using System.Threading; namespace ThreadsPractice1 { class Program { static void Main(string[] args) { int size = 20; int[] arr = new int[size]; int first = 0; int second = size - 1; Random rnd = new Random(); Thread A = new Thread(() => { while (true) { if (first < size / 2) { arr[first] = rnd.Next(1, 51); first++; } else { break; } Thread.Sleep(500); } }); Thread B = new Thread(() => { while (true) { if (second >= size / 2) { arr[second] = rnd.Next(51, 101); second--; } else { break; } Thread.Sleep(500); } }); A.Start(); B.Start(); A.Join(); B.Join(); for (int i = 0; i < arr.Length; i++) { Console.Write("|" + arr[i]); } Console.WriteLine("|"); } } } //Втора задача using System; using System.Threading; namespace ThreadPractice2 { internal class Program { static void Main(string[] args) { int size = 50; char[] arr = new char[50]; string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random rnd = new Random(); for (int i = 0; i < size; i++) { arr[i] = str[rnd.Next(str.Length)]; } int letterCount = 0; Thread A = new Thread(() => { foreach(char i in arr) { if (char.IsLetter(i)) { letterCount++; } } }); int numberCount = 0; Thread B = new Thread(() => { foreach (char i in arr) { if (char.IsNumber(i)) { numberCount++; } } }); A.Start(); B.Start(); A.Join(); B.Join(); Console.WriteLine($"Number of letters: {letterCount}"); Console.WriteLine($"Number of numbers: {numberCount}"); } } }