49678 (Динамические структуры данных), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Динамические структуры данных", который расположен в категории "". Всё это находится в предмете "информатика" из 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


П
риложения










Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4144
Авторов
на СтудИзбе
667
Средний доход
с одного платного файла
Обучение Подробнее