Advertisement
Slapoguzov

Lab5_OP

Dec 24th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.82 KB | None | 0 0
  1. using System;
  2. namespace Lab5
  3. {
  4.     class MyArray
  5.     {
  6.         private double[] arr;
  7.         private int lengthArr = 0;
  8.  
  9.         public MyArray(double[] inArr)
  10.         {
  11.             arr = inArr;
  12.             lengthArr = inArr.Length;
  13.         }
  14.  
  15.         public MyArray(int length)
  16.         {
  17.             Random val = new Random();
  18.             lengthArr = length;
  19.             arr = new double[lengthArr];
  20.             for(int i = 0; i < lengthArr; i++)
  21.             {
  22.                 arr[i] = val.Next(-32000, 32000) + val.NextDouble();
  23.             }
  24.  
  25.         }
  26.  
  27.         public int numberMinAbs()
  28.         {
  29.             int num = 0;
  30.             double tempMin = Math.Abs(arr[0]);
  31.             for (int i = 1; i < this.lengthArr; i++)
  32.             {
  33.                 if (tempMin > Math.Abs(arr[i]))
  34.                 {
  35.                     num = i;
  36.                     tempMin = Math.Abs(arr[i]);
  37.                 }
  38.             }
  39.  
  40.             return num;
  41.  
  42.         }
  43.  
  44.         public double sumElem()
  45.         {
  46.             double sum = 0;
  47.             bool flag = false;
  48.             for (int i = 1; i < lengthArr; i++)
  49.             {
  50.                 if (!flag)
  51.                 {
  52.                     if (arr[i] < 0) flag = true;
  53.  
  54.                 }
  55.                 else
  56.                 {
  57.                     sum += Math.Abs(arr[i]);
  58.                 }
  59.             }
  60.  
  61.             return sum;
  62.         }
  63.  
  64.         public void compresssionArr(double a, double b)
  65.         {
  66.             int k = lengthArr-1;                        //для переноса в конец массива
  67.             int i = 0;
  68.             while (i != lengthArr)
  69.             {
  70.                 if (arr[i] < a || arr[i] > b) { arr[i] = arr[k]; arr[k] = 0; k--; }
  71.                 else i++;
  72.             }
  73.         }
  74.  
  75.         public void printArr()
  76.         {
  77.             for (int i = 0; i < lengthArr; i++)
  78.             {
  79.                 Console.Write("[{0}] = {1}", i, arr[i]);
  80.                 Console.WriteLine();
  81.             }
  82.             Console.WriteLine();
  83.         }
  84.     }
  85.  
  86.     class MainClass
  87.     {
  88.         static MyArray arr;
  89.         static void Main()
  90.         {
  91.  
  92.                 enterArr();          
  93.             Console.ReadKey();
  94.         }
  95.  
  96.         static void enterArr()
  97.         {
  98.             try
  99.             {
  100.                 Console.Write("Введите размерность массива: ");
  101.                 int lengthArr = int.Parse(Console.ReadLine());
  102.  
  103.                 double[] inArr = new double[lengthArr];
  104.  
  105.                 Console.Write("Заполнить массив случайными числами? (y/n): ");
  106.                 switch (char.Parse(Console.ReadLine()))
  107.                 {
  108.                     case 'y':
  109.                         arr = new MyArray(lengthArr);
  110.                         menu();
  111.                         break;
  112.                     case 'n':
  113.                         Console.WriteLine("Ввидите значения элементов массива");
  114.                         for (int i = 0; i < lengthArr; i++)
  115.                         {
  116.                             Console.Write("[{0}]: ", i);
  117.                             inArr[i] = double.Parse(Console.ReadLine());
  118.                         }
  119.                         arr = new MyArray(inArr);
  120.                         menu();
  121.                         break;
  122.                     default:
  123.                         Console.WriteLine("Ошибка ввода! Повторите снова...");
  124.                         enterArr();
  125.                         break;
  126.  
  127.                 }
  128.             }
  129.             catch (FormatException)
  130.             {
  131.                 Console.WriteLine("Ошибка ввода! Повторите ввод...");
  132.                 enterArr();
  133.             }    
  134.         }
  135.  
  136.         static void menu()
  137.         {
  138.             Console.WriteLine("Выберите номер функции: \n 1.Вывести номер минимального по модулю элемента массива; \n 2.Вывести сумму модулей элементов массива; \n 3. Сжать массив; \n 4. Вывести элементы массива на экран; \n 5. Ввести новый массив; \n 6. Выход.");
  139.             switch (int.Parse(Console.ReadLine()))
  140.             {
  141.                 case 1:
  142.                     Console.WriteLine("Минимальный по модулю элемент: {0}", arr.numberMinAbs());
  143.                     menu();
  144.                     break;
  145.                 case 2:
  146.                     Console.WriteLine("Сумма модулей всех элементов: {0}", arr.sumElem());
  147.                     menu();
  148.                     break;
  149.                 case 3:
  150.                     Console.WriteLine("Введите интервал [a, b]");
  151.                     Console.Write("Введите интервал a: ");
  152.                     double a = double.Parse(Console.ReadLine());
  153.                     Console.Write("Введите интервал b: ");
  154.                     double b = double.Parse(Console.ReadLine());
  155.                     arr.compresssionArr(a, b);
  156.                     arr.printArr();
  157.                     menu();
  158.                     break;
  159.                 case 4:
  160.                     arr.printArr();
  161.                     menu();
  162.                     break;
  163.                 case 5:
  164.                     enterArr();
  165.                     menu();
  166.                     break;
  167.                 case 6:
  168.                     Environment.Exit(0);
  169.                     break;
  170.  
  171.                 default:
  172.                     Console.WriteLine("Ошибка ввода! Повторите снова...", arr.sumElem());
  173.                     menu();
  174.                     break;
  175.  
  176.             }
  177.  
  178.             Console.WriteLine();
  179.         }
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement