Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Ввод/вывод и обработка одномерного массива-строки
Для ввода одномерного массива – строки необходимо определить, какой разделитель будет использован между отдельными элементами. В нашем случае используем знак ; . Реализация кнопки «Массив – строка» приведена ниже: 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |