using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static double Read(string s) { for (byte check = 0; ; ++check) { try { Console.Write(s + " "); double x; if (double.TryParse(Console.ReadLine(), out x)) return x; else throw new FormatException("Введенные данные имеют неверный тип"); } catch (FormatException e) { Console.WriteLine(e.Message); if (check == 4) { Console.WriteLine("Проверьте данные и перезапустите программу"); Environment.Exit(0); } continue; } } } static double MaxElem(double[] a) { double max = a[0]; for (int i = 0; i < a.Length; ++i) { if (a[i] > max) max = a[i]; } return max; } static int LastNomerPlusElem(double[] a) { for (int i = a.Length - 1; i >= 0; ++i) { if (a[i] > 0) return i; } throw new FormatException("В массиве нет положительных элементов"); } static double SummElemBefore(double[] a, int last) { double summ = 0; for (int i = 0; i <= last - 1; ++i) { summ += a[i]; } return summ; } static double[] BirthdayArray() { double n1 = 0.1; for (int check = 0; check < 5; ++check) try { n1 = Read("Введите размерность массива"); if ((int)n1 != n1 || n1 <= 0) throw new FormatException("Введенные данные неверны"); break; } catch (FormatException e) { if (check == 4) { Console.WriteLine("Проверьте данные и перезапустите программу"); Environment.Exit(0); } Console.WriteLine(e.Message); continue; } int n = (int)n1; double[] a = new double[n]; for (int i = 0; i < a.Length; ++i) { Console.Write("Введите элемент массива № {0}", i + 1); a[i] = Read(""); } return a; } static double[] RandomBirthdayArray(double[] a) { for (int i = 0; i < a.Length; ++i) { Random r = new Random(); a[i] = r.Next(-100, 100); } return a; } static double[] MinimizeAB(double[] a) { double A, B; for (byte check = 0; ; ++check) try { { A = Read("Введите начальное значение диапозона участвующего в сжатии массива"); B = Read("Введите конечное значение диапозона участвующего в сжатии массива"); if (A > B) throw new FormatException("Неверный диапозон"); else break; } } catch (FormatException e) { Console.WriteLine(e.Message); if (check == 4) Console.WriteLine("Проверьте данные и перезапустите программу"); continue; } double[] b = new double[a.Length]; for (int i = 0, ib = 0; i < a.Length; ++i) { if (a[i] > B || a[i] < A) { b[ib] = a[i]; ib++; } } return b; } static void PrintArray(string s, double[] a) { Console.WriteLine(s); foreach (double e in a) Console.Write(" " + e); Console.WriteLine("\t"); } static void Main(string[] args) { double[] a = BirthdayArray(); PrintArray("Начальный массив ", a); Console.WriteLine("Сумма элементов массива, до последнео положительного " + SummElemBefore(a, LastNomerPlusElem(a))); PrintArray("Сжатый массив: ", MinimizeAB(a)); } } }