Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Recurs_alg
- {
- public partial class Input : Form
- {
- public Input()
- {
- InitializeComponent();
- }
- public static bool CheckString(string s)
- {
- bool b = true;
- if (s.Length==0) { MessageBox.Show("Пожалуйста, введите необходимые значения."); b = false; }
- else
- {
- if (s.Length > 100) { MessageBox.Show("Вы ввели слишком много значений! Пожалуйста, уменьшите их количество."); b = false; }
- }
- return b;
- }
- /// <summary>
- /// Превращение массива строк в массив чисел
- /// </summary>
- /// <param name="sarray">Массив строк</param>
- /// <returns>Массив чисел</returns>
- public static int[] StringToIntArray(string[] sarray)
- {
- int[] iarray = new int[30];
- try
- {
- for (int j = 0; j <= sarray.Length - 1; j++)
- {
- iarray[j] = Convert.ToInt32(sarray[j]);
- if (iarray[j]==0) { MessageBox.Show("Нуль - не натуральное число. Пожалуйста, исправьте введенные данные"); iarray[0]=0; }
- }
- }
- catch(FormatException)
- {
- MessageBox.Show("Вы ввели недопустимые значения. Пожалуйста, проверьте правильность введенных данных.");
- iarray[0] = 0;
- }
- return iarray;
- }
- /// <summary>
- /// Возвращает кол-во натуральных чисел в массиве
- /// </summary>
- /// <param name="array">Массив (вектор)</param>
- /// <returns>Длина вектора</returns>
- public static int RealLength(int[] array)
- {
- int n = 0;
- while ((n <= array.Length - 1) && (array[n] != 0)) { n++; }
- return n;
- }
- /// <summary>
- /// Преобразование вектора
- /// </summary>
- /// <param name="vector">Исходный вектор</param>
- /// <returns name="s">Строка</returns>
- public static string VectorTransformation(int[] vector)
- {
- string s = null;
- int n = RealLength(vector);
- int[] mass1 = new int[30];
- int[] mass2 = new int[30];
- if (n < 2) { s = s + vector[0]; }
- else
- {
- if (n % 2 == 0)//если длина вектора - четное число
- {
- //разбиение вектора на два
- for (int i = 0; i < (n / 2); i++) { mass1[i] = vector[i]; }
- for (int j = n / 2; j < n; j++) { mass2[j - (n / 2)] = vector[j]; }
- s = s + VectorTransformation(mass1) + ',' + VectorTransformation(mass2); //(*1.1*)
- }
- else
- {
- //разбиение вектора на два
- for (int i = 0; i <= (n / 2); i++) { mass1[i] = vector[i]; }
- for (int j = (n / 2); j < n; j++) { mass2[j - (n / 2)] = vector[j]; }
- s = s + VectorTransformation(mass1) + ',' + VectorTransformation(mass2); // (*1.2*)
- }
- }
- return s; // (*2*)
- }
- private void button1_Click(object sender, EventArgs e)
- {
- string strvector = input_vector.Text; //вектор в виде строки чисел через запятую
- int ex = 0; //переменная проверки правильности ввода
- string[] strarrvector = new string[30];
- int[] intvector = new int[30]; //массив из натуральных чисел вектора ограничен 30 числами
- int i = 0;//счетчик
- if (CheckString(strvector))
- {
- strarrvector = strvector.Split(',');
- intvector = StringToIntArray(strarrvector);
- if (intvector[0]!=0)
- {
- string s = VectorTransformation(intvector);
- output_vector.Text = s;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement