Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Завершение работы над интерфейсом

Поиск

Чернигов ЧГТУ 2011


Програмування. Методичні вказівки до виконання розрахунково-графічних робіт з дисципліни «Програмування» для студентів для студентів напряму підготовки 6.050102 – „Комп’ютерна інженерія”. /Укл.: Бальченко І.В., Бивойно Т.П., Гора Н.О.. – Чернігів: ЧДТУ, 2011. – 56 с. Рос. мовою.

 

 

Составители: Бальченко Ирина Владимировна, ассистент

Бивойно Тарас Павлович, ассистент

Гора Наталья Олеговна, старший преподаватель

 

 

Ответственный за выпуск: Бивойно П.Г., доцент кафедры информационных и компьютерных систем, кандидат технических наук,

 

 

Рецензент: Нестеренко С.А., кандидат технических наук, доцент кафедры информационных и компьютерных систем Черниговского государственного технологического университета

 


СОДЕРЖАНИЕ

Введение. 5

1 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 1. ФУНКЦИИ И ПРОЦЕДУРЫ ДЛЯ РАСЧЕТОВ ПО ФОРМУЛАМ.. 6

1.1 ЗАДАНИЯ К РАСЧЕТНО-ГРАФИЧЕСКОЙ РАБОТЕ. 6

1.2 ПРИМЕР СОЗДАНИЯ ПРОЕКТА.. 7

1.2.1 Создание интерфейса. 7

1.2.1.1 Компонент OLE-контейнер. 7

1.2.1.2 Компонент Group Box. 8

1.2.1.3 Компонент Memo. 8

1.2.1.4 Завершение работы над интерфейсом. 8

1.2.2 Создание процедур и функций. 9

1.2.2.1 Процедура очистки протокола. 9

1.2.2.2 Процедура инициализации формы.. 9

1.2.2.3 Процедура считывания коэффициентов уравнения. 11

1.2.2.4 Функция для расчета по формуле. 11

1.2.2.5 Процедура вызова выполнения расчета по формуле. 12

1.2.3 Использование дополнительного модуля. 14

1.2.4 Форматирование результатов расчетов. 14

1.2.5 Контольный пример. 15

1.3 Содержание отчета. 16

Рекомендованая литература. 16

2 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 2. ПРОГРАММИРОВАНИЕ ЦИКЛОВ 17

2.1 ЗАДАНИЯ К РАСЧЕТНО-ГРАФИЧЕСКОЙ РАБОТЕ. 17

2.2 РЕКОМЕНДАЦИИ ПО СОСТАВЛЕНИЮ АЛГОРИТМОВ РЕШАЕМЫХ ЗАДАЧ. 20

2.2.1 Итерационные алгоритмы.. 20

2.2.2 Алгоритмы вычисления сумм бесконечных рядов. 21

2.2.3 Алгоритмы обработки последовательностей целых чисел. 22

2.2.4 Алгоритмы табулирования значений функций. 24

2.3 ПРИМЕР СОЗДАНИЯ ПРОЕКТА.. 25

2.3.1 Компоненты для создания интерфейса проекта. 25

2.3.1.1 Компоненты PageControl и TabSheet 26

2.3.1.2 Компонент CheckBox. 26

2.3.1.3 Дополнительные требования к интерфейсу. 26

2.3.2 Создание закладки для вычисления корня. 27

2.3.2.1 Интерфейс страницы вычисления корня. 27

2.3.2.2 Процедура вычисления корня. 27

2.3.3 Создание закладки для вычисления синуса. 28

2.3.3.1 Интерфейс страницы вычисления синуса. 28

2.3.3.2 Процедура вычисления синуса. 29

2.3.4 Создание закладки «Табулирование функции». 30

2.3.4.1 Интерфейс странички «Табулирование функции». 30

2.3.4.2 Создание процедуры табулирования функции. 30

2.3.5 Создание закладки «Обработка последовательности целых чисел». 31

2.3.5.1 Интерфейс странички «Обработка последовательности целых чисел» 31

2.3.5.2 Создание процедуры обработки последовательности целых чисел 32

Рекомендованая литература. 33

3 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 3. ОБРАБОТКА МАССИВОВ.. 34

3.1 Задания для работы с одномерным массивом. 34

3.2 Задания на сортировку одномерных массивов. 35

3.3 Задания на обработку двумерных массивов. 37

3.4 Краткая характеристика вспомогательных модулей. 39

3.4.1 Интерфейс модуля для работы с одномерными массивами. 39

3.4.2 Интерфейс модуля для работы с двумерными массивами. 40

3.4.3 Рекомендации по перестановкам элементов матрицы.. 41

3.5 Содержание отчета. 42

Рекомендованая литература. 42

4 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 4. РАБОТА С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ.. 43

4.1 Задания для работы.. 43

4.2 Перечень основных процедур и функций для работы с типизированными файлами. 45

4.3 ПРИМЕР Создание проекта «Результаты аттестации». 45

4.3.1 Требования к проекту. 46

4.3.2 Интерфейс пользователя для проекта. 46

4.3.3 Определение типов данных. 48

4.3.4 Настройка интерфейса пользователя. 48

4.3.5 Вспомогательные процедуры для работы с файлом. 49

4.3.5.1 Процедура выбора имени файла. 49

4.3.5.2 Процедура открытия файла. 50

4.3.5.3 Процедура вывода файла в StringGrid. 50

4.3.6 Процедуры работы со StringGrid1. 51

4.3.7 Процедуры реализации пунктов меню fileMenu. 52

4.3.7.1 Добавление данных из StringGrid1 в файл. 52

4.3.7.2 Поиск записи по фамилии. 53

4.3.7.3 Удаление записи по фамилии. 54

4.3.7.4 Сохранение файла под другим именем. 55

4.4 Содержание отчета. 56

Рекомендованая литература. 56

Введение

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

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

Расчетно-графические работы выполняются на персональных компьютерах в системе программирования Delphi. Когда работа закончена, студент должен защитить ее. Защита заключается в ответах на вопросы по теме работы и внесении некоторых изменений в разработанный проект, в присутствии преподавателя. Отдельные отчеты по РГР не составляются, так как они являются частями отчетов по лабораторным работам, которые предусматривают выполнение РГР как составной части работы. За лабораторную работу студент может получить до трех баллов, с учетом своевременности и качества выполнения.

Номер варианта задания для РГР выбирается по последней цифре номера зачетной книжки студента (номер индивидуального плана студента)

1 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 1.
ФУНКЦИИ И ПРОЦЕДУРЫ ДЛЯ РАСЧЕТОВ ПО ФОРМУЛАМ

Цели работы:

– получить навыки создания простейших проектов, использующих пользовательские библиотеки процедур и функций;

– создать приложение, обеспечивающее расчет по формуле.

ЗАДАНИЯ К РАСЧЕТНО-ГРАФИЧЕСКОЙ РАБОТЕ

В этой работе создается приложение, которое должно обеспечить расчеты по некоторой формуле и регистрацию результатов расчетов в компоненте типа TMemo. Расчетную формулу следует выбрать из таблицы 1.1 в соответствии с последней цифрой номера зачетной книжки.

Функция и процедура для расчета по заданной формуле должны находиться в отдельном модуле

 

Таблица 1.1 – Задания для проекта
Вариант Формула
 
 
 
 
 
 
 
 
 
 

ПРИМЕР СОЗДАНИЯ ПРОЕКТА

Ниже рассматривается пример создания приложения, которое подобно тому, которое следует разработать. Разница заключается только в расчетной формуле и именах исходных данных.

Предполагаемый интерфейс этого приложения, в котором после запуска было выполнено пять расчетов, представлен на рисунке 1.1.

Рисунок 1.1- Интерфейс создаваемого приложения

Создание интерфейса

Откройте новый проект в Delphi. Установите значение свойства Name появившейся формы как frmFormula, а свойства Caption как «Расчет по формуле».

Компонент OLE-контейнер

OLE-контейнеры используются для того, чтобы из приложения, созданного в Delphi, можно было бы обращаться к стандартным приложениям Microsoft. Мы воспользуемся контейнером для того, чтобы разместить в нем расчетную формулу.

Компонент OLE-контейнер расположен на закладке System, палитры компонентов. Расположите контейнер в том месте формы, где должна быть формула и растяните его до нужных размеров.

Для того чтобы вызвать список объектов, которые можно вставить в контейнер, сделайте двойной щелчок в поле контейнера, или вызовите из контекстного меню функцию Insert Object. В появившемся списке выберите построитель формул (Microsoft Equation 3.0) и нажмите ОК. В результате, нужный объект помещается в контейнер, хотя вид контейнера при этом может не измениться.

Если построитель формул не появился на экране, сделайте двойной щелчок в поле контейнера, или вызовите из контекстного меню функцию «Открыть». Далее, используя средства построителя, наберите формулу свою формулу и закройте построитель. Формула должна появиться в поле контейнера.

Компонент Group Box

Компоненты этого типа используются для группировки других компонент по некоторому признаку. Группу компонентов можно перемещать по форме, копировать. Можно управлять доступностью или видимостью элементов группы и т.п. Иногда группировку используют просто для улучшения внешнего вида интерфейса.

Компонент Group Box находится на закладке Standard палитры компонентов.

Расположите на форме два объекта Group Box и запишите в свойстве Caption одного их них – «Исходные данные к расчету», а для другого – «Протокол выполненных расчетов».

Расположите в группе «Исходные данные к расчету» компоненты TEdit для ввода исходных данных Присвойте этим компонентам имена, которые будут соответствовать именам переменных в формуле. В нашем примере компонентам присвоены такие имена: edtA, edtX, edtN.

Над компонентами расположите надписи соответствующие именам переменных в формуле.

Компонент Memo

Компонент Memo можно использовать для работы с многострочным текстом. В нашем проекте в поле этого компонента будут регистрироваться результаты вычислений.

Компонент можно найти на закладке Standard палитры компонент.

Расположите компонент Memo на форме или внутри группы «Протокол выполненных расчетов», и присвойте ему имя memProtocol.

Присвойте свойству Scroll Bars значение ssVertical. В результате в поле должна появиться полоса вертикальной прокрутки.

Свойству Read Only присвойте значение True.

Создание процедур и функций

Процедура очистки протокола

Для очистки поля Memo можно использовать событие onClick для кнопки «Очистить протокол». Процедура обработки этого события представлена на рисунке 1.3.

Рисунок 1.3 - Процедура очистки протокола

В единственной инструкции этой процедуры вызывается процедура Clear (очистить) объекта memProtocol.

Содержание отчета

– Наименование работы.

– Цель работы.

– Задание к работе.

– Перечень компонент, использованных для создания интерфейса пользователя, с описанием их основных свойств.

– Тексты созданных модулей с пояснениями в виде комментариев для всех основных элементов модулей.

– Контрольные примеры.

– Результаты тестирования проекта, в виде рисунка с изображением интерфейса приложения с протоколом выполненных расчетов.

– Выводы об особенностях программирования расчетов по формулам.

 

 

Рекомендованая литература

1. Культин Н. Delphi 6. Программирование на Object Pascal. – СПб.:БХВ-Петербург,2002.

2. Ставровский А.Б. Турбо Pascal 7.0/ Учебник. – К.: BHV, 2000.

 

2 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА № 2.
ПРОГРАММИРОВАНИЕ ЦИКЛОВ

Цели работы:

– ознакомиться с принципами использования циклов;.

– освоить изображение схем алгоритмов;

– разработать проект, обеспечивающий решение задач, требующих многократных повторений некоторых действий.

ЗАДАНИЯ К РАСЧЕТНО-ГРАФИЧЕСКОЙ РАБОТЕ

В работе создается приложение, в котором решается четыре задачи:

– решение трансцендентного уравнения методом итераций;

– вычисление суммы бесконечного ряда с заданной точностью;

– обработка последовательности целых чисел;

– табулирование значений некоторой функции.

Задания следует выбирать в соответствии с последней цифрой номера зачетной книжки из таблиц 2.1 - 2.3, а также таблицы 1.1 (формулы для задачи табулирования функции).

Таблица 2.1 Уравнения, решаемые методом итераций  
Вариант Уравнение Итерационная формула Ограничения  
  ab<1, x0>0  
  a>0, b>0, b/a<6, x0<π/2  
    c>0, x0>0  
  a>1, x0>0  
  ab>c, x0<π/(2b)  
  a>0, b>0 c>1, x0>0  
  a>0, c>0, x0>0  
  a>1, c>1, b<c, x0>1  
  a>0, b>0, c>0, x0>0  
  a>0, b>0, c>0, x0>0  
Таблица 2.2 Задания на вычисление сумм бесконечных[ рядов
Функция Ряд Рекуррентная формула
    e
    , для х<1
    , для х<1
    , для х<1
  , для х>1
    cos(x)
    sh(x)
    arctg(x)
    ln(1+x)
 
               

 

 

Таблица 6.5 – Варианты заданий для формы «Обработка целых чисел»
Вариант Задание
  Написать программу, которая обеспечивает вывод в компонент TMemo, в возрастающем порядке, всех трехзначных целых чисел, в десятичной записи которых нет одинаковых цифр. Рекомендуется преобразовывать числа в строки и анализировать отдельные символы.
  Обеспечить вывод в компонент TMemo всех целых чисел, попадающих в интервал от ln(X) до exp(X), где Х > 1, и вычисление суммы этих чисел. Для округления границ диапазона использовать функции Ceil() и Floor().
  Обеспечить вывод в компонент TMemo всех трехзначных целых чисел, сумма цифр которых равна введенному числу N (1< N < 27). Определить количество этих чисел. Для выделения отдельных цифр использовать преобразование чисел в строки.
  Обеспечить вывод в компонент TMemo всех целых чисел, попадающих в интервал от n1 до n2 и кратных n3. Определить количество этих чисел.
  Обеспечить вывод в компонент TMemo всех целых чисел, попадающих в интервал от n1 до n2 и которые являются удвоенными нечетными числами. Подсчитать количество этих чисел.
  В случайной последовательности из n целых чисел подсчитать количество чисел меньших m и обеспечить вывод этих чисел в компонент TMemo.
  Обеспечить вывод в компонент TMemo последовательности из n целых чисел и определить число соседств четных чисел в этой последовательности.
  Обеспечить вывод в компонент TMemo случайной последовательности из n целых чисел в диапазоне от 0 до m и подсчитать, сколько раз в ней встречалось число k.
  Найти все простые числа, которые меньше N, и вывести их в компонент TMemo. Простым называют целое число, которое нацело делится только на 1 и на себя. Для тестирования чисел можно последовательно проверять результат деления каждого числа X на числа от 2 до X/2
  Для введенного натурального числа N получить все его натуральные и вывести их в компонент TMemo. Для нахождения делителей следует последовательно проверять результат деления числа N на числа от 2 до N/2.

РЕКОМЕНДАЦИИ ПО СОСТАВЛЕНИЮ АЛГОРИТМОВ РЕШАЕМЫХ ЗАДАЧ

Итерационные алгоритмы

Алгоритм решения уравнений, приведенных в таблице 2.1 заключается в следующем. Берется какое-нибудь приближенное значение корня уравнения х0 (начальное приближение) и подставляется в итерационную формулу. Полученное по итерационной формуле новое приближенное значение корня сравнивается с предыдущим. Если эти значения существенно отличаются друг от друга, то новое приближенное значение подставляется в итерационную формулу вместо старого и получается новое приближенное значение. Так продолжается до тех пор, пока новое и старое приближения станут достаточно близкими дуг к другу.

Примером итерационного алгоритма может служить алгоритм вычисления кубического корня методом Ньютона, который представлен на рисунке 2.1.

Рисунок 2.1 – Схема итерационного алгоритма

 

Суть метода заключается в том, что приближенное значение корня находится по формуле 2.1.

(2.1)

где а – число, из которого извлекается корень, xold – приближенное значение корня, xnew – более точное, чем xold значение корня.

Таким образом, формула позволяет последовательно уточнять значения корня, используя предыдущий результат. В качестве начального значения для x можно взять число, из которого извлекается корень.

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

Для реализации этого алгоритма используется цикл REPEAT.

Схема алгоритма, реализующего этот метод, представлена на рисунке 2.1.

В алгоритме предусмотрено прерывание цикла с помощью инструкции break в том случае, если переменная Xold равна нулю, для того, чтобы исключить деление на 0.

ПРИМЕР СОЗДАНИЯ ПРОЕКТА

В этом проекте реализуются разработанные выше алгоритмы решения уравнения методом итераций, вычисления суммы бесконечного ряда, обработки последовательности целых чисел и табулирования функции, требующие циклического повторения некоторых вычислений.

Компонент CheckBox

Этот компонент используется в проекте для того, чтобы управлять выводом последовательных приближений (промежуточных значений результата) в поле Memo.

Основное свойство этого компонента Checked может принимать значения true или false (включено или выключено). Анализируя это свойство в программе, мы можем управлять ходом вычислений.

В нашем проекте компоненту CheckBox присвоим имя CheckSteps.

2.3.1.3 Дополнительные требования к интерфейсу

В проекте предполагается ввод большого количества числовых исходных данных. Поэтому в проекте целесообразно обеспечить контроль ввода данных в текстовые поля, используя событие onKeyPress и процедуру TestRealKey, созданную в четвертой лабораторной работе. Эта процедура должна была быть создана во время лабораторных работ и храниться в модуле UnitDop. В этом же модуле должна быть и функция для расчета по формуле, соответствующей вашему варианту. Если вы не сохранили модуль, создайте процедуру и функцию заново и включите ее в модуль. Подключите модуль UnitDop к проекту.

Напишите процедуру инициализации всех закладок формы, которая обеспечит заполнение полей ввода данными, которые соответствуют контрольным примерам. Это ускорит отладку.

 

Процедура вычисления корня

Следует заметить, что для вычисления корня кубического правильнее было бы написать функцию, или процедуру, которая возвращала бы значение корня. У Вас будет возможность написать их при защите работы. Мы же напишем процедуру, которая будет вызываться по событию onClick для кнопки «Найти корень кубический».

Рассматриваемая процедура, представленная на рисунке 2.6.

Рисунок 2.6 - Процедура вычисления кубического корня

 

Эта процедура, ничего не возвращает, но она вычисляет корень и выводит его в текстовое поле для результата. Кроме того, для проверки, она выводит значение результата, возведенное в куб, что позволяет контролировать правильность вычисления корня.

Процедура также обеспечивает вывод последовательных приближений в компонент MemoSteps.

Первые инструкции процедуры обеспечивают ввод значения числа, из которого вычисляется корень, и значение точности вычислений.

Затем реализуется алгоритм, рассмотренный в пункте 2.2.1.

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

Процедура вычисления синуса

Следует заметить, что для вычисления синуса, так же как и в предыдущем случае, правильнее было бы написать функцию, или процедуру, которая возвращала бы значение корня. Мы же напишем процедуру, которая будет вызываться по событию onClick для кнопки «Синус».

Рассматриваемая процедура, представленная на рисунке 2.8.

Рисунок 2.8 - Процедура вычисления синуса

Процедура ничего не возвращает, но она вычисляет синус и выводит его в текстовое поле для результата. Кроме того, она, для проверки, выводит значение синуса, найденное с помощью стандартной процедуры.

Перед вычислением синуса в процедуре добавлен цикл уменьшения значения х. Это сделано для того, чтобы избежать переполнения или потери значащих цифр при больших значениях х. В этом цикле переменная х уменьшается каждый раз на величину периода синуса, который равен 2π. Цикл работает до тех пор, пока абсолютная величина х больше, чем 2π.

Процедура также обеспечивает вывод последовательных значений членов и суммы ряда в компонент MemoSteps.

Задания для работы с одномерным массивом

Обработка одномерных массивов выполняется в соответствии с требованиями варианта из таблицы 3.1. Номер варианта выбирается по последней цифре номера зачетной книжки.

Главное меню закладки должно включать следующие пункты:

– создание массива,

– получение числовых характеристик массива,

– формирование нового массива.

На закладке должны быть поля для ввода количества элементов массива и предельного значения величины числа.

Вывод других характеристик по выбору разработчика.

Компоненты для хранения исходного массива и массива, получаемого в результате обработки, должны соответствовать варианту задания.

Глобальные переменные для хранения массива и количества данных в нем использовать не следует.

При выполнении каждого пункта меню всю необходимую информацию считывать с формы.

Таблица 3.1 – Задания на обработку одномерных массивов
Создание исходного массива Хранение исходного массива Числовые характеристики Получение нового массива Вывод нового массива
  Random TEdit Размах элементов (max-min) Удаление четных элементов TMemo
  InputBox TMemo Разность сумм элементов в четных и нечетных позициях Оборот массива TEdit
  Random TEdit Определение позиций четных элементов Вставка элемента в заданную позицию TLabel
  InputBox TLabel Определение позиций элементов, которые меньше среднего арифметического Удаление заданного элемента из массива Show Message
Продолжение таблицы 3.1
  Random TMemo Разность сумм четных и нечетных элементов   Заданное число циклических сдвигов влево Show Message
  InputBox TLabel Количество четных и нечетных элементов Вставка суммы элементов в начало массива TMemo
  Random TMemo Средние арифметические четных и нечетных элементов Заданное число циклических сдвигов вправо TEdit
  InputBox TMemo Поиск позиции заданного элемента Вставка среднего арифметического значения в середину массива TLabel
  Random TLabel Количество элементов больше и меньше среднего Вначале нечетные, затем четные Show Message
  InputBox TEdit Сумма элементов больше и меньше среднего Минимальный в начало, макси-мальный в конец TMemo

 

Примеры решения подобных задач можете найти в примерах к лекциям. При разработке можно использовать процедуры и функции модуля UnitArrayDop.

Задания на сортировку одномерных массивов

Закладка для сортировки и работы с упорядоченным одномерным массивом создается в соответствии с требованиями варианта из таблицы 3.2. Номер варианта выбирается по последней цифре номера зачетной книжки.

Главное меню проекта должно включать следующие пункты:

– создание массива;

– сортировка массива;

– вставка элемента в упорядоченный массив;

– удаление элемента из упорядоченного массива;.

На форме должно быть поле для ввода количества элементов массива и поле для максимального значения числа в массиве.

Ввод удаляемого и вставляемого элемента на усмотрение разработчика. Для этого можно использовать компонент типа TEdit или функцию InputBox.

 

Таблица 3.2 – Задания на работу с упорядоченными массивами
Создание исходного массива Хране ние масс. Тип данных массива 1-й уровень сортировки 2-й уровень сортировки Метод сортировки
  InputBox TMemo String По длине строки на возрастание По алфавиту Вставкой
  Random Tedit ±Real Отрицатель- ные, затем положительн. На убывание Обменом
  InputBox Tmemo String По длине строки на убывание По алфавиту Выбором
  Random Tedit ±Real Положитель-ные, затем отрицател. На возраста-ние Вставкой
  InputBox Tmemo String По длине строки на убывание С конца алфавита Обменом
  Random Tedit ±Real     Выбором
  InputBox Tmemo String По длине строки на возрастание С конца алфавита Вставкой
  Random Tedit ±Real Вначале большие 1 затем меньшие На возраста-ние Обменом
  InputBox TMemo String Слова с цифрами в конец   По алфавиту Выбором
  Random TEdit ±Real Вначале меньшие 1 затем большие На убыва-ние Вставкой

 

Компоненты для хранения исходного массива и массива, получаемого в результате обработки, должны соответствовать варианту задания. Глобальные переменные для хранения массива и количества данных в нем использовать не следует. При выполнении каждого пункта меню всю необходимую информацию считывать с формы.

Студенты, для которых реализация сортировки по усложненному правилу окажется сложной, могут сортировать массив по обычному правилу на возрастание или убывание, но в этом случае оценка за проект будет ниже.

 

Задания на обработку двумерных массивов

Варианты заданий приведены в таблицах 3.3, 3.4 и 3.5. Номер варианта выбирается в соответствии с последней цифрой номера зачетной книжки.

Интерфейс соответствующей закладки должен обеспечивать тестирование заданий, которые приведены ниже. Все компоненты интерфейса выбирайте по своему усмотрению. Примеры решения подобных задач можете найти в примерах к лекциям и модуле UnitMatrixDop.

 

Таблица 3.3 Задачи тотальной обработки матриц
Вариант Задание
  Найти наибольшее и наименьшее число и его координаты в матрице случайных чисел.  
  Подсчитать количество нулей и единиц в матрице, состоящей из случайных двоичных чисел.
  Найти наибольшее и наименьшее из четных значений и их координаты в матрице.
  Найти координаты всех элементов равных заданномучислу в матрице.
  Подсчитать суммы для четных и нечетных чисел в матрице.
  Сравнить элементы двух матриц и создать третью, элементы которой равны большему числу из каждой пары чисел. Результат вывести в окно ShowMessage
  Создать и вывести в окно ShowMessage матрицу, в которой нули расположены в клетках, у которых четная сумма индексов. Остальные клетки заполнить единицами.
  Из матрицы, заполненной числами, создать новую матрицу, элементы которой равны сумме цифр чисел в исходной.
  Создать матрицу, значения элементов которой равны сумме индексов этих элементов.
  Подсчитать, сколько раз встречается заданное число в матрице. Число вводить через InputBox.

 

Таблица 3.4 Задачи на выборочную обработку матриц  
Вариант Задание  
     
  Создать массив, элементы которого равны количеству цифр чисел, расположенных по кромке матрицы.  
  Создать массив, элементы которого равны максимальным элементам в нечетных столбцах матрицы.  
Продолжение таблицы 3.4  
     
  Создать массив, элементы которого равны минимальным элементам в четных строках матрицы.  
  Создать массив, элементы которого равны сумме цифр чисел, расположенных по кромке случайно заполненной матрицы.  
  Создать массив, элементы которого равны суммам пар чисел, расположенных на главной и вспомогательной диагонали матрицы.  
  Создать массив, элементы которого соответствуют столбцу матрицы, номер которого вводится через InputBox.  
  Создать массив, элементы которого равны сумме элементов в нечетных столбцах матрицы.  
  Создать массив, элементы которого равны сумме элементов в четных строках матрицы.  
  Создать массив, элементы которого соответствуют строке матрицы, номер которой вводится через InputBox.  
  Создать массив, элементы которого равны суммам пар чисел, на осях квадратной матрицы с нечетного размера  
    Таблица 4.5 Задачи на перестановку элементов матрицы
Вариант Задание по обработке
  Поменять местами наибольший и наименьший элементы матрицы.
  Перевернуть квадратную матрицу вдоль второй диагонали
  Перевернуть матрицу вдоль горизонтальной оси.
  Перевернуть матрицу вдоль вертикальной оси.
  Поменять местами элементы главной и вспомогательной диагонали матрицы.
  Поменять местами элементы вертикальной и горизонтальной оси квадратной матрицы с нечетным размером.
  Перевернуть задом - наперед элементы главной диагонали квадратной матрицы
  Перевернуть элементы второй диагонали квадратной матрицы
  Сдвинуть элементы по кромке квадратной матрицы так, чтобы первая строка стала последним столбцом, последний столбец – нижней строкой в обратном порядке, нижняя строка – первым столбцом и перевернутый первый столбец – первой строкой.
  Удалить заданные столбец и строку матрицы
       

 

Рекомендации по перестановкам элементов матрицы

Есть задачи, в которых требуется менять местами элементы матрицы. Ниже перечислены некоторые из таких задач.

– Транспонирование матрицы (поворот вокруг главной диагонали).

– Поворот вокруг вспомогательной диагонали.

– Поворот вокруг горизонтальной оси.

– Поворот вокруг вертикальной оси.

Для решения всех этих задач требуется двойной цикл. Внешний цикл обычно организуется по всем номерам строк или столбцов, иногда, за исключением первого или последнего номера. Внутренний же цикл обеспечивает перебор только половины элементов, которые расположены с одной стороны от оси поворота. Тело цикла содержит операторы, которые обеспечивают обмен значениями между текущим элементом матрицы и симметричным ему. Для организации обмена удобнее всего использовать промежуточную переменную.

Основная трудность, возникающая при решении этих задач, это определение индексов элемента, сим



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 203; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.112.208 (0.01 с.)