Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ввод/вывод и обработка одномерного массива-строки




Для ввода одномерного массива – строки необходимо определить, какой разделитель будет использован между отдельными элементами. В нашем случае используем знак ; . Реализация кнопки «Массив – строка» приведена ниже:

private void button5_Click(object sender, EventArgs e)

   {

          string[] temp;

        //массив для размещения вводимых и выводимых данных

 

       int k, pr = 1;

       string dan;

 

       dan = mas_row.Text;

       //присвоение набранной строки целиком переменной

 

       temp = dan.Split(';');

// выделение отдельных элементов массива, аргументом функции

// Split является наш разделитель ;

 

       k = temp.Length; //определим длину введенного массива

 

       while (temp[k - 1] == "") k--; // см. разъяснение 1

       int[] x = new int[k]; 

//объявление массива чисел для введенных данных

 

       for (int i = 0; i < k; i++)

//преобразование типов введенных данных

           x[i] = Convert.ToInt32(temp[i]);

 

       for (int i = 0; i < k; i++)

       { // обработка введенного массива

           x[i] = x[i] * x[i];

           pr *= x[i];

       }

 

       rezult.Text = "Proizv " + pr; // вывод результата

       dan = "";

       mas_row.Clear(); // очистка поля mas_row для вывода

 

       for (int i = 0; i < k; i++)

           dan += " " + x[i];

// накопление полученных элементов числового массива в 

// переменной символьного типа, в качестве разделителя – пробел

 

       mas_row.Text = dan; //вывод результата

}

 

Разъяснение 1. Если закончить последовательность вводимых данных разделителем (в нашем случае ;), то последним элементом массива temp будет пустая строка, которая не может быть преобразована в число. Поэтому исключим эту возможность. Если при вводе ставить два разделителя подряд, то в массиве temp будет пустая строка в середине. Что с ней делать – решать программисту!

 

Ввод/вывод и обработка одномерного массива-столбца

    При вводе одномерного массива в виде столбца необходимо просто набрать значения, нажав после каждого на Enter. Нажатие на Enter после последнего значения вставит пустую строку в качестве последнего элемента. Реализация кнопки «Массив – столбец»:

private void button4_Click(object sender, EventArgs e)

   {

       string []st1;

       int []mas;

//массивы для размещения данных

 

       int k,pr=0;

 

       st1=new string[mas_col.Lines.Length];

       k=mas_col.Lines.Length;

       mas = new int[k];

//инициируем массивы для принятия исходных данных, количество

//элементов равно количеству строк в компоненте mas_col

           

       st1 = mas_col.Lines;

//перенесем введенный массив из компонента mas_col в массив st1

 

       while(st1[k-1]=="") k--; //см. разъяснение 1 выше

       for(int i=0;i<k;i++) // преобразование типов данных

           mas[i]=Convert.ToInt32(st1[i]);

       for (int i = 0; i < k; i++)

       { // обработка массива

           mas[i] = 5 * mas[i];

           pr += mas[i];

 

           st1[i] = Convert.ToString(mas[i]);

// преобразование типов данных для вывода

       }

 

       mas_col.Clear(); //очистка поля вывода

       mas_col.Lines = st1; // вывод результата: массива - столбца

       rezult.Text="Summa Col "+pr;

   }

 

Ввод/вывод и обработка двумерного массива

    Перед тем как приступить к вводу/выводу и обработке двумерного массива введем некоторые уточнения. Очевидно, что на кнопку «Обработка и вывод двумерного массива» нет смысла нажать пока массив не введен. Поэтому изначально пусть эта кнопка будет «серой», для чего на этапе проектирования дадим ее свойству Enabled значение False. Во-вторых, ввод и обработка двумерного массива будут в разных функциях, поэтому его необходимо объявить как переменную класса Form1 (Напомним, что каждой форме соответствует класс). Найдем раздел переменных этого класса и запишем туда:

       private double[,] a;

   int n, m; //количество строк и столбцов

Мы по существу уже знаем, как ввести двумерный массив: он представляет собой столбец с одномерными массивами - строками. Используем в качестве разделителя ; . Предположим, что двумерный массив прямоугольный.

Реализация кнопки «Ввод двумерного массива»:

private void button1_Click(object sender, EventArgs e)

   {

       string[] mas; // массив для представления одной вводимой строки

       string s = "";

       string[] dan; //массив для представление всех введенных строк

       this.button2.Enabled = true; // кнопка обработки откроется

         n = mas22.Lines.Length; //количество строк в двумерном

                                                    // массиве будет равно количеству введенных строк

       dan = new string[n];

       dan = mas22.Lines; //введенные строки передаем

                    // массив символьных строк, одна строка – один элемент

       while (dan[n - 1] == "") n--;

       mas = dan[0].Split(';'); //разделим первую строку на

                                                                                 //элементы с помощью разделителя

       m = mas.Length; // определим количество столбцов двумерного

                                                              // массива

       a = new double[n, m]; // инициализация двумерного массива

       for (int i = 0; i < n; i++)

       { // строка за строкой преобразуем типы данных и

          // формируем числовой массив

           mas = dan[i].Split(';');

           for (int j = 0; j < mas.Length; j++)

               a[i, j] = Convert.ToDouble(mas[j]);

       }             }

 

Реализация кнопки «Обработка и вывод двумерного массива»:

private void button2_Click(object sender, EventArgs e)

   {

       string[] st1 = new string[n]; // массив для

                              // накопления двумерного массива после обработки

       double smm=0;

       mas22.Clear(); //очистка поля для вывода

       for (int i = 0; i < n; i++)

           for (int j = 0; j < m; j++)

           { // обработка массива

               a[i, j] = 2 * a[i, j];

               smm += a[i, j];

           }

                         // цикл подготовки двумерного массива к выводу

       for (int i = 0; i < n; i++)

           for (int j = 0; j < m; j++)

               st1[i]+=" "+Convert.ToString(a[i,j]);

       mas22.Lines = st1; // вывод двумерного массива

       rezult.Text = "Summa 2: "+Convert.ToString(smm);

   }

 

Примечание. На рис. 4.1. форма показана после нажатия кнопок «Ввод двумерного массива» и «Обработка и вывод двумерного массива»

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 312.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...