Advertisement
Guest User

Untitled

a guest
May 26th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.60 KB | None | 0 0
  1. namespace Recurs_alg
  2. {
  3.     public partial class Input : Form
  4.     {
  5.         public Input()
  6.         {
  7.             InitializeComponent();
  8.         }
  9.  
  10.         public static bool CheckString(string s)
  11.         {
  12.             bool b = true;
  13.  
  14.             if (s.Length==0) { MessageBox.Show("Пожалуйста, введите необходимые значения."); b = false; }
  15.             else
  16.             {
  17.                 if (s.Length > 100) { MessageBox.Show("Вы ввели слишком много значений! Пожалуйста, уменьшите их количество."); b = false; }
  18.             }
  19.  
  20.             return b;
  21.         }
  22.  
  23.         /// <summary>
  24.         /// Превращение массива строк в массив чисел
  25.         /// </summary>
  26.         /// <param name="sarray">Массив строк</param>
  27.         /// <returns>Массив чисел</returns>
  28.         public static int[] StringToIntArray(string[] sarray)
  29.         {
  30.             int[] iarray = new int[30];
  31.  
  32.             try
  33.             {
  34.                 for (int j = 0; j <= sarray.Length - 1; j++)
  35.                 {
  36.                     iarray[j] = Convert.ToInt32(sarray[j]);
  37.                     if (iarray[j]==0) { MessageBox.Show("Нуль - не натуральное число. Пожалуйста, исправьте введенные данные"); iarray[0]=0; }
  38.                 }
  39.             }
  40.             catch(FormatException)
  41.             {
  42.                 MessageBox.Show("Вы ввели недопустимые значения. Пожалуйста, проверьте правильность введенных данных.");
  43.                 iarray[0] = 0;
  44.             }
  45.  
  46.             return iarray;
  47.         }
  48.  
  49.         /// <summary>
  50.         /// Возвращает кол-во натуральных чисел в массиве
  51.         /// </summary>
  52.         /// <param name="array">Массив (вектор)</param>
  53.         /// <returns>Длина вектора</returns>
  54.         public static int RealLength(int[] array)
  55.         {
  56.             int n = 0;
  57.  
  58.             while ((n <= array.Length - 1) && (array[n] != 0)) { n++; }
  59.  
  60.             return n;
  61.         }
  62.  
  63.         /// <summary>
  64.         /// Преобразование вектора
  65.         /// </summary>
  66.         /// <param name="vector">Исходный вектор</param>
  67.         /// <returns name="s">Строка</returns>
  68.         public static string VectorTransformation(int[] vector)
  69.         {
  70.             string s = null;
  71.             int n = RealLength(vector);
  72.             int[] mass1 = new int[30];
  73.             int[] mass2 = new int[30];
  74.  
  75.             if (n < 2) { s = s + vector[0]; }
  76.             else
  77.             {
  78.                 if (n % 2 == 0)//если длина вектора - четное число
  79.                 {
  80.                     //разбиение вектора на два
  81.                     for (int i = 0; i < (n / 2); i++) { mass1[i] = vector[i]; }
  82.                     for (int j = n / 2; j < n; j++) { mass2[j - (n / 2)] = vector[j]; }
  83.  
  84.                     s = s + VectorTransformation(mass1) + ',' + VectorTransformation(mass2); //(*1.1*)
  85.                 }
  86.                 else
  87.                 {
  88.                     //разбиение вектора на два
  89.                     for (int i = 0; i <= (n / 2); i++) { mass1[i] = vector[i]; }
  90.                     for (int j = (n / 2); j < n; j++) { mass2[j - (n / 2)] = vector[j]; }
  91.                     s = s + VectorTransformation(mass1) + ',' + VectorTransformation(mass2); // (*1.2*)
  92.                 }
  93.             }
  94.  
  95.             return s; // (*2*)
  96.         }
  97.  
  98.  
  99.         private void button1_Click(object sender, EventArgs e)
  100.         {
  101.             string strvector = input_vector.Text; //вектор в виде строки чисел через запятую
  102.             int ex = 0; //переменная проверки правильности ввода
  103.             string[] strarrvector = new string[30];
  104.             int[] intvector = new int[30]; //массив из натуральных чисел вектора ограничен 30 числами
  105.             int i = 0;//счетчик
  106.  
  107.             if (CheckString(strvector))
  108.             {
  109.                 strarrvector = strvector.Split(',');
  110.                 intvector = StringToIntArray(strarrvector);
  111.                 if (intvector[0]!=0)
  112.                 {
  113.                     string s = VectorTransformation(intvector);
  114.                     output_vector.Text = s;
  115.                 }                
  116.             }
  117.         }
  118.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement