методичка. метода по ООП для практики. Лабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6
Скачать 1.1 Mb.
|
4.3. Индивидуальные заданияПо заданию лабораторной работы №3 написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой в свою очередь передается в качестве параметра в функцию вывода (Out_Rez). Лабораторная работа №5. Обработка одномерных массивовЦель работы: изучить составной тип данных – массив, основные свойства компоненты StringGrid. Написать и отладить программу с использованием одномерных массивов. 5.1. Общие теоретические сведенияМассив – конечная последовательность данных одного типа. Массив – объект сложного типа, каждый элемент которого определяется именем (ID) и целочисленным значением индекса (номера), по которому к элементу массива производится доступ. Рассмотрим одномерные массивы. Внимание! Индексы массивов в языке С/С++ начинаются с 0. В программе одномерный массив декларируется следующим образом: тип ID массива [размер]; где размер – указывает количество элементов в массиве. Размер массива может задаваться константой или константным выражением. Для использования массивов переменного размера существует отдельный механизм – динамическое выделение памяти. Примеры декларации массивов: int a[5]; double b[4] = {1.5, 2.5, 3.75}; в целочисленном массиве а первый элемент а[0], второй – а[1], …, пятый – а[4]. Для массива b, состоящего из действительных чисел, выполнена инициализация, причем элементы массива получат следующие значения: b[0]=1.5, b[1]=2.5, b[2]=3.75, b[3]=0. В языке С/С++ не проверяется выход индекса за пределы массива. Корректность использования индексов элементов массива должен контролировать программист. Примеры описания массивов: const Nmax=10; – задание максимального значения; typedef double mas1[Nmax*2]; – описание типа одномерного массива; mas1 a; – декларация массива а типа mas1; int ss[10]; – массив из десяти целых чисел. Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например: f = 2*a[3] + a[Ss[i] + 1]*3; a[n] = 1 + sqrt(fabs(a[n–1])); 5.2. Создание оконного приложенияКомпонента StringGridПри работе с массивами ввод и вывод значений обычно организуется с использованием компоненты StringGrid, предназначенной для отображения информации в виде двухмерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну Edit). Доступ к информации осуществляется с помощью элемента Cells[ACol][ARow] типа AnsiString, где целочисленные значения ACol, ARow указывают позицию элемента. Внимание! Первый индекс ACol определяет номер столбца, а второй ARow – номер строки в отличие от индексов массива. В инспекторе объектов значения ColCount и RowCount устанавливают начальные значения количества столбцов и строк в таблице, а FixedCols и FixedRows задают количество столбцов и строк фиксированной зоны. Фиксированная зона выделена другим цветом и обычно используется для надписей. 5.3. Пример выполнения заданияУдалить из массива А размером N, состоящего из целых чисел (положительных и отрицательных), все отрицательные числа. Новый массив не создавать. Для заполнения массива использовать фунцию random(kod) – генератор случайных равномерно распределенных целых чисел от 0 до (int)kod. 5.3.1. Пример создания оконного приложенияЗначение N вводить из Edit, значения массива А – из компоненты StringGrid. Результат вывести в компоненту StringGrid. Панель диалога и результаты выполнения программы приведена на рис. 5.1. Рис. 5.1 Настройка компоненты StringGridНа закладке Additional выберите пиктограмму , установите компоненты StringGrid1 и StringGrid2 и отрегулируйте их размеры. В инспекторе объектов для обоих компонент установите значения ColCount равными 2, RowCount равными 1, т.е. по два столбца и одной строке, а значения FixedCols и FixedRows равными 0. Значение ширины клетки столбца DefaultColWidth равным 40. По умолчанию в компоненту StringGrid ввод данных разрешен только программно. Для разрешения ввода данных с клавиатуры необходимо в свойстве Options строку goEditing для компоненты StringGrid1 установить в положение true. Текст функций-обработчиков может иметь следующий вид: . . . int n = 4; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { randomize(); // Изменение начального адреса для random() Edit1->Text=IntToStr(n); StringGrid1->ColCount=n; for(int i=0; i StringGrid1->Cells[i][0] = IntToStr(random(21)-10); Label3->Hide(); // Скрыть компоненту StringGrid2->Hide(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { n=StrToInt(Edit1->Text); if(n>10){ ShowMessage("Максимальное количество 10!"); n=10; Edit1->Text = "10"; } StringGrid1->ColCount=n; for(int i=0; i StringGrid1->Cells[i][0]=IntToStr(random(21)-10); Label3->Hide(); StringGrid2->Hide(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int i, kol = 0, a[10]; // Декларация одномерного массива //Заполнение массива А элементами из таблицы StringGrid1 for(i=0; i a[i]=StrToInt(StringGrid1->Cells[i][0]); //Удаление отрицательных элементов из массива А for(i=0; i if(a[i]>=0) a[kol++] = a[i]; StringGrid2->ColCount = kol; StringGrid2->Show(); // Показать компоненту Label3->Show(); //Вывод результата в таблицу StringGrid2 for(i=0; i } 5.3.2. Пример создания консольного приложенияТекст программы может иметь следующий вид (обратите внимание на то, что функция main используется в простейшей форме – без параметров и не возвращает результатов): . . . #include #include void main() { int a[10],n, i, kol=0; randomize(); // Изменение начального адреса для random() printf("Input N (<=10) "); scanf("%d", &n); puts("\n Massiv A"); for(i=0; i a[i] = random(21)-10; // Заполнение массива А случайными числами printf("%4d", a[i]); } //Удаление отрицательных элементов из массива А for(i=0; i if(a[i]>=0) a[kol++] = a[i]; puts("\n Rezult massiv A"); for(i=0; i puts("\n Press any key ... "); getch(); } С заполненным случайными числами массивом А результат программы может быть следующим: |