bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [157]
АВС [6]
КПиЯП [80]
ОАиП [305]
ОКТ [79]
СиСПО [8]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОАиП

Лабораторная №3 по ОАиП ч.2 вариант 8
Подробности о скачивании 27.01.2011, 23:59
3. Перенести из созданного списка в новый список все элементы, находящиеся между вершиной и элементом с минимальным значением.
Оконный режим.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "z3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct Stack { // Декларация структурного типа
int info;
Stack * next;
} *begin, *t;
//------------ Декларации прототипов функций пользователя ----------
Stack* InStack(Stack*, int);
void View(Stack*);
void Del_All(Stack **);
void Sort_p(Stack **);
void Sort_info(Stack *);

//--------------- Функция добавления элемента в Стек ------------------------
Stack* InStack(Stack *p, int in) {
Stack *t = new Stack;
t -> info = in;
t -> next = p;
return t;
}
//----------------- Функция просмотра Стека----------------------------------
void View(Stack *p) {
Stack *t = p;
while( t != NULL) {
Form1->Memo1->Lines->Add(" " + IntToStr( t->info));
t = t -> next;
}
}
//----------------------- Функция освобождения памяти -----------------------
void Del_All(Stack **p) {
while(*p != NULL) {
t = *p;
*p = (*p) -> next;
delete t;
}
}
void Sort_p(Stack **p) {
Stack *t = NULL, *t1, *r;
if ((*p) -> next -> next == NULL) return;
do {
for (t1=*p; t1-> next->next != t; t1=t1-> next)
if (t1->next->info > t1-> next-> next-> info){
r = t1->next->next;
t1 -> next -> next = r -> next;
r-> next =t1-> next;
t1-> next = r;
}
t= t1-> next;
} while ((*p)-> next -> next != t);
}

void Sort_info(Stack *p) {
Stack *t = NULL, *t1;
int r;
do {
for (t1=p; t1 -> next != t; t1 = t1-> next)
if (t1-> info > t1-> next -> info) {
r = t1-> info;
t1-> info = t1-> next -> info;
t1-> next -> info = r;
}
t = t1;
} while (p -> next != t);
}

void View_min(Stack *p)
{
Stack *t = p;
int min;
min = p->info;

while( p != NULL) {
if((p->info)<min) min =p->info;
p=p->next;
}
Form1->Memo1->Lines->Add("До минимального");
while( t->info != min) {
Form1->Memo1->Lines->Add(" " + IntToStr( t->info));
t = t -> next;
}
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i, in, n = StrToInt(Edit1->Text);
if(begin != NULL){
ShowMessage("Освободите память!");
return;
}
for(i = 1; i <= n; i++){
in = random(20);
begin = InStack(begin, in);
}
Memo1->Lines->Add("Создали " + IntToStr(n) + " -ть.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, in, n = StrToInt(Edit1->Text);
for(i = 1; i <= n; i++){
in = random(20);
begin = InStack(begin, in);
}
Memo1->Lines->Add("Добавили " + IntToStr(n) + " -ть.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(!begin){
ShowMessage("Стек Пуст!");
return;
}
Memo1->Lines->Add("--- Элементы ---");
View(begin);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
if (begin != NULL) Del_All(&begin);
ShowMessage("Память освобождена!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
if(begin != NULL) Del_All(&begin);
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
if(begin != NULL) Sort_p(&begin);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
if(begin != NULL) Sort_info(begin);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if(begin != NULL) View_min(begin);
}
//---------------------------------------------------------------------------
Результат работы программы:
Создание:

Просмотреть:

Сортировка1:

Сортировка 2:

Индивидуальное задание:

Консольный режим:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#pragma hdrstop

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

#pragma argsused
struct Stack { // Декларация структурного типа
int info;
Stack * next;
} *begin, *t;
//------------ Декларации прототипов функций пользователя ----------
Stack* InStack(Stack*, int);
void View(Stack*);
void Del_All(Stack **);
void Sort_p(Stack **);
void Sort_info(Stack *);
void View_min(Stack *);
void main(int argc, char* argv[])
{
int i, in, n, kod;
while(true){
cout << "\n\tCreat - 1.\n\tAdd - 2.\n\tView - 3.\n\tDel - 4.\n\tSort1 - 5.\n\tSort2 - 6.\n\tInd_zad - 7.\n\tEXIT - 0. : " ;
cin >> kod;
switch(kod) {
case 1: case 2:
if(kod == 1 && begin != NULL){
// Если создаем новый стек, должны освободить память, занятую предыдущим
cout << "Clear Memory!" << endl;
break;
}
cout << "Input kol = "; cin >> n;
for(i = 1; i <= n; i++) {
in = random(20);
begin = InStack(begin, in);
}
if (kod == 1) cout << "Create " << n << endl;
else cout << "Add " << n << endl;
break;
case 3: if(!begin){
cout << "Stack Pyst!" << endl;
break;
}
cout << "--- Stack ---" << endl;
View(begin);
break;
case 4:
Del_All(&begin);
cout<<"Memory Free!"<<endl;
break;
case 5:
if(begin != NULL) Sort_p(&begin);
break;
case 6:
if(begin != NULL) Sort_info(begin);
break;
case 7:
if(begin != NULL) View_min(begin);
break;
case 0:
if(begin != NULL)
Del_All(&begin);
return; // Выход - EXIT
}
}
}
//---------------------------------------------------------------------------
//--------------- Функция добавления элемента в Стек ------------------------
Stack* InStack(Stack *p, int in) {
Stack *t = new Stack;
t -> info = in;
t -> next = p;
return t;
}
//----------------- Функция просмотра Стека----------------------------------
void View(Stack *p)
{
int c;
Stack *t = p;
while( t != NULL) {
c = t->info;
cout<<" "<<c<<endl;
t = t -> next;
}
}
//----------------------- Функция освобождения памяти -----------------------
void Del_All(Stack **p) {
while(*p != NULL) {
t = *p;
*p = (*p) -> next;
delete t;
}
}
void Sort_p(Stack **p) {
Stack *t = NULL, *t1, *r;
if ((*p) -> next -> next == NULL) return;
do {
for (t1=*p; t1-> next->next != t; t1=t1-> next)
if (t1->next->info > t1-> next-> next-> info){
r = t1->next->next;
t1 -> next -> next = r -> next;
r-> next =t1-> next;
t1-> next = r;
}
t= t1-> next;
} while ((*p)-> next -> next != t);
}

void Sort_info(Stack *p) {
Stack *t = NULL, *t1;
int r;
do {
for (t1=p; t1 -> next != t; t1 = t1-> next)
if (t1-> info > t1-> next -> info) {
r = t1-> info;
t1-> info = t1-> next -> info;
t1-> next -> info = r;
}
t = t1;
} while (p -> next != t);
}

void View_min(Stack *p)
{
Stack *t = p;
int min, c;
min = p->info;

while( p != NULL) {
if((p->info)<min) min =p->info;
p=p->next;
}
cout<<"Do minimalnogo"<<endl;
while( t->info != min) {
c = t->info;
cout<<" "<<c<<endl;
t = t -> next;
}
}
Результат работы программы:
Создание стека:

Вывод на экран:

Сортировка 1:

Сортировка 2:

Индивидуальное задание:

Категория: ОАиП | Добавил: schamile
Просмотров: 2350 | Загрузок: 21
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]