Главная страница
Навигация по странице:

  • Внимание

  • Внимание! Первый индекс ACol определяет номер столбца, а второй A

  • Options

  • методичка. метода по ООП для практики. Лабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6


    Скачать 1.1 Mb.
    НазваниеЛабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6
    Анкорметодичка
    Дата11.01.2022
    Размер1.1 Mb.
    Формат файлаdoc
    Имя файламетода по ООП для практики.doc
    ТипЛабораторная работа
    #328342
    страница10 из 19
    1   ...   6   7   8   9   10   11   12   13   ...   19

    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; iCells[i][0]=IntToStr(a[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();

    }
    С заполненным случайными числами массивом А результат программы может быть следующим:



    1   ...   6   7   8   9   10   11   12   13   ...   19


    написать администратору сайта