ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.09.2024

Просмотров: 34

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Література

  1. Архангельский А.Я. Программирование в C++ Builder, 7 изд., Бином, 2010. — 1304 с

  2. Бобровский С. Самоучитель программирования на C++ в системе C++ Builder. ДЕСС, 2003. — 810 с.

  3. Культин Н.Б. Самоучитель C++ Builder., Высшая школа, 2006. — 380 с.

  4. Архангельский А.Я. C++ Builder 6 справочное пособие, 2005. — 635 с.

  5. Алексанкин Т.А. Borland C++, 2003 — 540 с.

  6. Ермолаев В., Сорока Т. C++ Builder Книга рецептов, 2003. — 560 с.

  7. Культин Н.Б. C++ Builder в задачах и примерах, 2000. — 400 с.

  8. Бобровский С. Технологии C++ Builder., 2005. — 490 с.

  9. Прата С. Язык программирования C++ Лекции и упражениния, 1999. – 630 с.

Додаток а (Обовязковий) Лістинг основної програми

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include<stdio.h>

struct Stack {

int info;

Stack * next;

} *begin;

void InStack(int);

void View(Stack *);

void Del_All(Stack **);

void Poisk(void);

void Dobav_n(Stack *);

void Dobav_k(Stack *);

void Dobav(Stack *, int);

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int i,n;

n=StrToInt(Edit1 ->Text);

for(i=0;i<n;i++)

{ InStack(random(20)); }

View(begin);

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Memo1->Clear();

Del_All(&begin);

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

{

switch(RadioGroup1->ItemIndex)

{

case 0:{ Memo1->Lines->Add("Перевірка наявності однакових елементів.");

Poisk(); break;}

case 1:{ Memo1->Lines->Add("Перенесення на початок останнього елемента.");

Dobav_n(begin);

View(begin); break;}

case 2:{ Memo1->Lines->Add("Перенесення в кінець першого елемента.");

Dobav_k(begin);

View(begin); break;}

case 3:{ int x=StrToInt(Edit1->Text);


Memo1->Lines->Add("Вставка списку самого в себе слідом за першим входженням числа --> "+IntToStr(x));

Dobav(begin,x);

View(begin); break;}

}

}

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

void InStack(int n)

{

Stack *temp = new Stack;

temp->info=n;

temp->next=begin;

begin=temp;

}

void View(Stack *temp)

{

while(temp!=NULL)

{

Form1->Memo1->Lines->Add(" "+IntToStr(temp->info));

temp=temp->next;

}

}

void Del_All(Stack **p)

{

Stack *temp=new Stack;

while(*p!=NULL)

{

temp=*p;

*p=(*p)->next;

delete temp;

}

}

void Poisk(void)

{

Stack *temp,*temp1;

temp=temp1=begin;

while(temp!=NULL)

{

temp1=temp;

while(temp1!=NULL)

{

if((temp->info==temp1->info) && (temp!=temp1))

{

Form1->Memo1->Lines->Add(" "+IntToStr(temp->info));

}

temp1=temp1->next;

}

temp=temp->next;

}

}

void Dobav_n(Stack *p)

{

int x;

while(p!=NULL)

{

x=p->info;

p=p->next;

}

InStack(x);

}

void Dobav_k(Stack *p)

{

int n=p->info;

while(p->next!=NULL)

p=p->next;

Stack *temp=new Stack;

p->next=temp;

p=p->next;

p->info=n;

p->next=NULL;

}

void Dobav(Stack *p, int x)

{

int *A,N=0,i=0;

Stack *temp=p;

while(temp!=NULL)

{ N++; temp=temp->next; }

A=new int[N];

temp=p;

while(temp!=NULL)

{ A[i]=temp->info;

temp=temp->next;

i++;

}

while(p->info!=x)

{ p=p->next; }

if(p->info==x)

{

for(i=0;i<N;i++)

{

Stack *temp1=new Stack;

temp1->info=A[i];

temp1->next=p;

temp1->next=p->next;

p->next=temp1;

}

}

delete A;

}


Смотрите также файлы