ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.09.2024
Просмотров: 34
Скачиваний: 0
Література
-
Архангельский А.Я. Программирование в C++ Builder, 7 изд., Бином, 2010. — 1304 с
-
Бобровский С. Самоучитель программирования на C++ в системе C++ Builder. ДЕСС, 2003. — 810 с.
-
Культин Н.Б. Самоучитель C++ Builder., Высшая школа, 2006. — 380 с.
-
Архангельский А.Я. C++ Builder 6 справочное пособие, 2005. — 635 с.
-
Алексанкин Т.А. Borland C++, 2003 — 540 с.
-
Ермолаев В., Сорока Т. C++ Builder Книга рецептов, 2003. — 560 с.
-
Культин Н.Б. C++ Builder в задачах и примерах, 2000. — 400 с.
-
Бобровский С. Технологии C++ Builder., 2005. — 490 с.
-
Прата С. Язык программирования 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;
}