![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры. Пример 2.1 Используя компоненту Label выведем названия месяцев в отсортированном виде ( рис
Пример 2.1 Используя компоненту Label выведем названия месяцев в отсортированном виде (рис. 17 - результат вывода элементов массива).
Решение задачи: 1. учитывая, что в году 12 месяцев, объявим количество месяцев как константу, т.е. const n=12; 2. Названия месяцев – это одномерный массив из строк, поэтому его можно объявить как: const AnsiString month[]={" январь", " февраль", " март", " апрель", " май", " июнь", " июль", " август", " сентябрь", " октябрь", " ноябрь", " декабрь" }; 3. Функция на щелчок компоненты Button1: void __fastcall TForm1:: Button1Click(Sender: TObject); { const n=12; AnsiString s; // Название месяцев int i; //индекс, номера элементов массива for (i=0; i< n; i++) //цикл с параметром s=s+IntToStr(i+1) + " " + month[i]+" \n"; Label1-> Caption=s; // вывод списка } Пример 2.2 используя компонент StringGrid для ввода данных, вычислить сумму и среднее арифметическое элментов одномерного. Решение задачи: 1. Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional.
Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. Таблица делится на две области: фиксированную и рабочую. Первая область используется для описания заголовков стоблцов и строк таблицы и управления вручную их шириной. Во многих случаях эта область занимает левую колонку и верхнюю строку. Но с помощью свойств FixedCols и FixedRows можно изменить количество фиксированных колонок и строк. Если их значения равны 0, то фиксированных областей не будет (рис.19). В таблице11 перечислены некоторые свойства компоненты StringGrid. Свойства компонента StringGrid Таблица 11
Таблица 12
2. Устанавливаем на форме кнопку BitBtn1, задаем свойство Kind равной bkOK, Значок этого компонента как и StringGrid находится во вкладке Additional палитры компонентов и используется как командная кнопка. 3. Основная работа выполняется при щелчке на кнопке BitBtn1 (событие OnClik). Вначале объявляем все переменные - исходные данные и результаты: a[5] - вводимый массив, summa- сумма элементов массива, sred - среднее арифметическое элементов массива, i – индекс. float a[5]; float summa, sred; int i; 4. Ввод элементов массива: считаем, что если ячейка пустая, то соответствующий ей элемент массива равен нулю for (i=0; i < n; i++) if (StringGrid1-> Cells[i][0]==" ") a[i]=0; else a[i]=StrToFloat(StringGrid1-> Cells[i][0]); 5. Обработка массива: summa=0; // вначале сумматор или накопитель суммы равен нулю for (i=0; i< 5; i++)// оператор цикла с параметром, перебирает элементы массивы с 0 по 4 summa=summa+a[i]; // данные в накопителе суммы увеличиваются на значение a[i] sred=summa/5; //опоеделяем среднее арифметическое 5 цифр 5. Результаты представляем в компоненте Label Label2-> Caption= “сумма элементов: ” + FloatToStr(summa)+”\n”+ “арифметическое среднее: ” + FloatToStr(sred); 6. Результаты вычислений приведены на рис.19. б. Пример 2.3. Для массива, заданного рекурентной формулой 1. сформировать массив по рекурентной формуле; 2. определить минимальный элемент массива и его порядковый номер; 3. определить максимальный элемент массива и его порядковый номер; 4. среднеарифметическое элементов массива; 5. количество элементов принадлежащих интервалу [2; 5]. Здесь: a0= 4.3; a1=1.8; i = 2, 3, …24. Текст программы: //--------------------------------------------------------------------------- #include < vcl.h> #pragma hdrstop #include < stdlib.h> #include < math.h>
#include " Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource " *.dfm" TForm1 *Form1; int i, n; float a[25]; //--------------------------------------------------------------------------- __fastcall TForm1:: TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1:: FormActivate(TObject *Sender) { Edit1-> SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TForm1:: Button1Click(TObject *Sender) { try {n=StrToInt(Edit1-> Text); a[0]= StrToFloat(Edit2-> Text); a[1]= StrToFloat(Edit3-> Text); } catch (EConvertError&) { ShowMessage(" Вы ввели ошибочное число, повторите ввод"); } /* массив қ ұ ру*/ for (i=2; i< n; i++) a[i]= a[i-1]+ 2/a[i-2]; /* массивты шығ ару*/ for (i=0; i< n; i++) Memo1-> Lines-> Add(" a[" +IntToStr(i)+" ]= " +FloatToStrF(a[i], ffFixed, 5, 2)+" "); }
//--------------------------------------------------------------------------- void __fastcall TForm1:: Button2Click(TObject *Sender) { int max, min, k; float sum=0.0; if (CheckBox1-> Checked == True) {for (i=max=0; i< n; i++) { if (a[i]> a[max]) max=i; } Edit4-> Text=FloatToStrF(a[max], ffFixed, 5, 2); } if (CheckBox2-> Checked == True) {for (i=min=0; i< n; i++) { if (a[i]< a[min]) min=i; } Edit5-> Text=FloatToStrF(a[min], ffFixed, 5, 2); } if (CheckBox3-> Checked == True) {for (i=0; i< n; i++) {sum += a[i]; } sum = sum/n; Edit6-> Text=FloatToStrF(sum, ffFixed, 5, 2); } if (CheckBox4-> Checked == True) {for (i=k=0; i< n; i++) { if (2< a[i] & & a[i]< 5) k++; } Edit7-> Text=IntToStr(k); } }
//--------------------------------------------------------------------------- void __fastcall TForm1:: Button3Click(TObject *Sender) { Edit1-> Clear(); Edit2-> Clear(); Edit3-> Clear(); Edit4-> Clear(); Edit5-> Clear(); Edit6-> Clear(); Edit7-> Clear(); Memo1-> Clear(); } //---------------------------------------------------------------------------
Рисунок 20. Результаты вычислений
|