49678 (Динамические структуры данных), страница 2
Описание файла
Документ из архива "Динамические структуры данных", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49678"
Текст 2 страницы из документа "49678"
#include
#include
// ---------------------------------------------------------------------------
#pragma package (smart_init)
#pragma resource "*. dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
}
// ---------------------------------------------------------------------------
struct tStack
{
char strFName [255] ;
char strRValue [6] ;
int numPar;
char** pParams;
bool bFilled;
tStack* pNext;
tStack ()
{
pNext = NULL;
numPar = 0;
bFilled = false;
}
void Add (char* strFName_, char* strRValue_, int numPar_, char** pParams_);
void Delete ();
void Print (TMemo* memo);
void Free ();
};
tStack* temp;
int num = 0;
int max_num = 1000;
void tStack:: Add (char* strFName_, char* strRValue_, int numPar_, char** pParams_)
{
if (num == (max_num-1)) MessageBox ("Almost Overload", "Warning ", MB_OK);
if (num == max_num)
{
MessageBox ("Overload", "", "Error", MB_OK);
}
num++;
if (pNext)
pNext->Add (strFName_, strRValue_, numPar_, pParams_);
else
{
if (! bFilled)
{
strcpy (strFName, strFName_);
strcpy (strRValue, strRValue_);
numPar = numPar_;
pParams = new char* [numPar] ;
for (int i = 0; i < numPar; i++)
{
pParams [i] = new char [6] ;
strncpy (pParams [i], pParams_ [i],
6);
}
bFilled = true;
}
else
{
pNext = new tStack;
pNext->Add (strFName_, strRValue_, numPar_, pParams_);
}
}
}
void tStack:: Delete ()
{
if (pNext)
if (pNext->pNext)
pNext->Delete ();
else
{
delete [] pNext;
pNext = NULL;
}
}
void tStack:: Print (TMemo* memo)
{
memo->Lines->Add ("* - -------------- - *");
memo->Lines->Add ("Имя функции: "+ (AnsiString) strFName);
memo->Lines->Add ("Возвращаемое значение: "+ (AnsiString) strRValue);
memo->Lines->Add ("Количество параметров: "+ (AnsiString) IntToStr (numPar));
memo->Lines->Add ("Параметры функции: ");
for (int i = 0; i < numPar; i++)
{
memo->Lines->Add (pParams [i]);
}
if (pNext)
pNext->Print (memo);
}
void tStack:: Free ()
{
if (temp) delete [] temp;
if (pNext)
{
temp = this;
pNext->Free ();
}
}
tStack* stack;
void __fastcall TForm1:: Button1Click (TObject *Sender)
{
if (! stack) stack = new tStack;
char* str = new char [Edit1->Text. Length () + 1] ;
strcpy (str, Edit1->Text. c_str ());
char* str2 = new char [Edit2->Text. Length () + 1] ;
strncpy (str2, Edit2->Text. c_str (),
6);
char* str3 = Edit3->Text. c_str ();
char* ptr = strtok (str3, "; ");
char** p = new char* [255] ;
int n = 0;
while (ptr)
{
p [n] = new char [6] ;
strncpy (p [n], ptr,
6);
ptr = strtok (NULL, "; ");
n++;
}
stack->Add (str, str2, n, p);
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button4Click (TObject *Sender)
{
Memo1->Lines->Clear ();
if (! stack) return;
stack->Print (Memo1);
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button2Click (TObject *Sender)
{
if (! stack) return;
if (! stack->pNext)
{
delete [] stack;
stack = NULL;
return;
}
stack->Delete ();
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button3Click (TObject *Sender)
{
if (! stack) return;
stack->Free ();
delete [] stack;
stack = NULL;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: FormCreate (TObject *Sender)
{
temp = NULL;
}
// ---------------------------------------------------------------------------
5. Контрольный пример
Введём в программу следующие значения:
имя функции 'summ'
возвращаемое значение ‘2a+3b’;
параметры ‘2a; 3b; 0; 1’;
и нажмем кнопку добавить.
Далее введём аналогичные данные соответственно:
‘test_summ’, ‘abajaba’, ‘qwerty asd; asd fg; asdgf1; 123 d456’ и нажмем кнопку добавить.
Теперь нажмём кнопку распечатать и получим следующее, учитывая особенности условия:
* - -------------- - *
Имя функции: summ
Возвращаемое значение: 2a+3b
Количество параметров: 4
Параметры:
2a
3b
0
1
* - -------------- - *
Имя функции: text_summ
Возвращаемое значение: abajab
Количество параметров: 4
Параметры:
qwerty
asd fg
asdfg1
123d4
Теперь нажмём кнопку удалить, а затем кнопку распечатать:
Имя функции: summ
Возвращаемое значение: 2a+3b
Количество параметров: 4
Параметры:
2a
3b
0
1
Далее нажмём кнопку очистить и при нажатии кнопки распечатать на экран программа ничего выводить не будет.
Заключение
Данная курсовая работа является примером обработки информации, представленной в виде стека, которые наглядно позволяет увидеть возможности реализации запросов, предусмотренных алгоритмом, т.е. осуществление ряда операций над данными такой структуры.
Описание алгоритма программным способом реализовано при помощи языка С++.
Область применения алгоритма достаточно обширна, т.к сам алгоритм представляет собой один из способов обработки информации.
Работа с различного рода данными является очень актуальной. Решение таких задач позволяется сократить затрачиваемое время на обработку данных и повысить эффективность самой работы.
Перечень используемой литературы
1. М. Уэйт, С. Прата "Язык Си", М: МИР, 1988
2. У. Мюррей, К. Паллас "Visual C++", М: BHV, 1996