Программирование на С++ - eDrive

Программирование на С++ - eDrive Программирование на С++ - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
24.11.2014 Views

double *myVector0; gridRows = StrToInt (Edit1–>Text); myVector0 = new double [gridRows]; delete [] gridRows; 8 6. Запретить пользователю редактирование расчетного массива в третьем столбце таблицы, для чего воспользоваться обработкой событий компонента StringGrid. Работа 2. Групповая обработка данных Задание Для освоения приемов групповой обработки и сортировки массивов взять за основу предыдущую работу (например, сохранив проект и форму под новыми именами в новой папке, File.Save Project As…, File.Save As…). Добавить в форму три надписи для отображения результатов групповой обработки расчетного массива: поиска максимального и минимального значений и выполнения заданной в табл. 1 статистической операции. Организовать сортировку расчетного массива. Рекомендации 1. Групповые вычисления. К вычислениям предыдущей работы добавить поиск и вывод в форму максимального и минимального значений расчетного массива, например: #include … double stat = MaxValue (myVector2, gridRows–1); Label1–>Caption = "Максимум " + FloatToStr (stat); Разработать, также, функцию для выполнения заданной статистической операции над расчетным массивом с выводом ее результата в форму. 2. Сортировка массива методом «пузырька». Дополнить форму третьей кнопкой с обработчиком, выполняющим сортировку методом «пузырька» по возрастанию данных расчетного массива. Алгоритм метода использует два цикла: внешний цикл с инкрементом и внутренний с декрементом: for (int i = 0; i < gridRows–1; ++i) for (int j= gridRows–1; j>i; – –j) if (myVector2 [j] < myVector2 [j–1]) Перестановка Перестановку элементов в функции сортировки целесообразно проводить, передавая данные в отдельную функцию вида

9 void MySwap (double &a, double &b) 3. Сортировка строк методом «пузырька». Реорганизовать сортировку расчетного массива в сортировку строк, в ходе которой элементы первого и второго массивов следуют за соответствующими элементами расчетного массива. Для этого функция перестановки вызывается трижды, и при каждом вызове ей передаются данные следующего массива. 4. Быстрая сортировка массива. Дополнить форму четвертой кнопкой с обработчиком, выполняющим сортировку расчетного массива в убывающем порядке с использованием библиотечной функции qsort: qsort ((void*) myVector2, gridRows, sizeof (double), MySortFunc); Текст функции сравнения элементов массива, предусмотренный синтаксисом qsort, может быть, например, таким: int MySortFunc( const void *a, const void *b) { return *(double*) a > *(double*) b ? –1 : 1; } Задачи 1. Разработать функцию сортировки методом «пузырька» по убыванию значений массива. 2. Разработать функцию сортировки qsort по возрастанию значений массива. 3. Разработать функцию сортировки qsort произвольно выбираемого пользователем массива. 4. Разработать функцию сравнения элементов массива qsort, возвращающую один из трех результатов: 1 при a > b, –1 при a < b, 0 при a = b. 5. Разработать функции поиска минимального и максимального элементов массива без использования файла заголовка Math.hpp. Работа 3. Классы Задание Чтобы научиться создавать и использовать авторский класс, разработать проект с формой, аналогичной предыдущей работе. В этом проекте все действия над массивами – их формирование, выполнение групповых операций и сортировка с использованием функции qsort – должны выполняться средствами авторского класса.

double *myVector0;<br />

gridRows = StrToInt (Edit1–>Text);<br />

myVector0 = new double [gridRows];<br />

delete [] gridRows;<br />

8<br />

6. Запретить пользователю редактирование расчетного массива в третьем<br />

столбце таблицы, для чего воспользоваться обработкой событий компонента<br />

StringGrid.<br />

Работа 2. Групповая обработка данных<br />

Задание<br />

Для освоения приемов групповой обработки и сортировки массивов взять за<br />

основу предыдущую работу (<strong>на</strong>пример, сохранив проект и форму под новыми<br />

име<strong>на</strong>ми в новой папке, File.Save Project As…, File.Save As…). Добавить<br />

в форму три <strong>на</strong>дписи для отображения результатов групповой обработки<br />

расчетного массива: поиска максимального и минимального з<strong>на</strong>чений и выполнения<br />

заданной в табл. 1 статистической операции. Организовать сортировку<br />

расчетного массива.<br />

Рекомендации<br />

1. Групповые вычисления. К вычислениям предыдущей работы добавить поиск<br />

и вывод в форму максимального и минимального з<strong>на</strong>чений расчетного<br />

массива, <strong>на</strong>пример:<br />

#include <br />

…<br />

double stat = MaxValue (myVector2, gridRows–1);<br />

Label1–>Caption = "Максимум " + FloatToStr (stat);<br />

Разработать, также, функцию для выполнения заданной статистической<br />

операции <strong>на</strong>д расчетным массивом с выводом ее результата в форму.<br />

2. Сортировка массива методом «пузырька». Дополнить форму третьей<br />

кнопкой с обработчиком, выполняющим сортировку методом «пузырька»<br />

по возрастанию данных расчетного массива. Алгоритм метода использует<br />

два цикла: внешний цикл с инкрементом и внутренний с декрементом:<br />

for (int i = 0; i < gridRows–1; ++i) for (int j= gridRows–1; j>i; – –j)<br />

if (myVector2 [j] < myVector2 [j–1]) Перестановка<br />

Перестановку элементов в функции сортировки целесообразно проводить,<br />

передавая данные в отдельную функцию вида

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!