Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 20:44   #1
elf01
Пользователь
 
Регистрация: 18.11.2011
Сообщений: 34
По умолчанию почему она не работает

Задание:
Написать программу, в которой
1. Пользователь имеет возможность указать размер массива действительных чисел, который заполняется случайными значениями. Содержимое массива связывается с некоторым компонентом так, чтобы пользователь имел возможность просматривать его актуальное состояние.
2. В зависимости от выбранной пользователем опции, производится сортировка массива
2.1. по убыванию методом простой вставки,
2.2. по убыванию методом Шелла
2.3. по возрастанию методом быстрой сортировки (qsort)
3. Для выполнения всех описанных выше действий используются специально написанные для этого функции. Причем функция, реализующая пункт 2.2., использует функцию, реализующую пункт 2.1.
4. После сортировки информации о методе, количестве элементов в массиве и времени затраченном на выполнение сортировки выводятся пользователю так, чтобы он имел возможность видеть всю историю выполнения операций.
5. Пользователь имеет также возможность очищать историю выполнения операций.

Код:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
int *a = NULL;
int N = 0;
void setSizeAndFill()
{
if (a !=NULL)
delete []a;
a = new int[N];
for (int i = 0; i<N; i++)
{
a[i]=random(100);
}
}
bool compareValues(int a, int b, bool abcsort)
{
if (abcsort)
return a<b;
else
return a>b;
}
void insertionSort(int imin, int imax, int step, bool abcsort)
{
for (int i = imin + step; i < imax; i += step)
{
int j = i;
while (j > 0 && compareValues(a[j - step], a[j], abcsort))
{
int tmp = a[j];
a[j] = a[j - step];
a[j - step] = tmp;
j -= step;
}
}
}
void shellSort()
{
int step = N / 2;
while (step !=0)
{
for (int i = 0; i < step; i++)
step /= 2;
}
}
void updateStringGrid()
{
Form1->StringGrid1->RowCount = N + 1;
for (int i = 0; i < N; i++)
{
Form1->StringGrid1->Cells[0][i+1] = IntToStr(i);
Form1->StringGrid1->Cells[1][i+1] = IntToStr(a[i]);
}
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
N = StrToInt(Edit1->Text);
setSizeAndFill();
updateStringGrid();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
Randomize();
StringGrid1->Cells[0][0] = "Индекс";
StringGrid1->Cells[1][0] = "Значение";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Memo1->Clear();
}
int sort_function( const void *a, const void *b)
{
return (*(int*)a) - (*(int*)b);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDateTime tstart = Time();
switch (RadioGroup1->ItemIndex)
{
case 0:
insertionSort(0, N, 1, true);
break;
case 1:
shellSort();
break;
case 2:
qsort((void *)a, N, sizeof(int), sort_function);
break;
}
TDateTime tfinish = Time();
int dt = 24*60*60*1000*(tfinish - tstart);
AnsiString s = (RadioGroup1->Items->Strings[RadioGroup1->ItemIndex]);
s += ", n: " + IntToStr(N) + ", Время: " + IntToStr(dt) + " мс";
Memo1->Lines->Add(s);
updateStringGrid();
}
//---------------------------------------------------------------------------
elf01 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить одну задачу по паскалю. она вовсе не сложная, но я не пойму почему моя программа не работает =stay= Паскаль, Turbo Pascal, PascalABC.NET 1 11.12.2011 21:58
Функция на Си, как именно она работает Алексей Денисов Помощь студентам 3 13.11.2011 20:16
Найдите ошибку в проге, почему не работате она (((( ProgFrog Visual C++ 2 14.04.2011 13:10
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
посмотрите пожалуйста программу..почему она не работает? Darya Помощь студентам 9 12.05.2009 17:27