Добавил:
Uliminittion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
// lab1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
using namespace std;
struct obj {
int item;
obj* next;
};
void del_x2(obj**);
void view(obj*);
void push(obj**, int);
void clear(obj**);
void sort(obj*);
void mmx(obj**);
int main()
{
setlocale(LC_ALL, "Russian");
obj* begin = NULL;
play:
cout << "1. Создать новый стек " << endl;
cout << "2. Просмотреть текущик стек " << endl;
cout << "3. Очистить текущий стек " << endl;
cout << "4. Отсортировать текущий стек " << endl;
cout << "5. Выйти " << endl;
cout << endl;
cout << "6. Задание удалить из стека четные элменты" << endl;
cout << "7. Задание поменять мах и мин элменты" << endl;
int a = 0;
cin >> a;
int b;
switch (a)
{
case 1:
if (begin != NULL)
{
cout << "Стек уже создан" << endl;
repeat1:
cout << "Вернуться назад или выйти?" << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat1;
}
}
else
{
err:
cout << "Введите длину стека" << endl;
int l = 0;
cin >> l;
if (l < 1)
{
cout << "Ошибочная длина стека!" << endl;
goto err;
}
for (int i = 0; i < l; i++)
{
push(&begin, (-10 + (rand() % 21)));
}
cout << "Ваш стек:" << endl;
view(begin);
cout << endl;
repeat2:
cout << "Желаете вернуться или выйти?" << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat2;
}
}
case 2:
if (begin == NULL)
{
cout << "Стек пустой!" << endl;
repeat3:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat3;
}
}
else
{
cout << "Ваше стек:" << endl;
view(begin);
repeat4:
cout << "Желаете вернуться или выйти?" << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat4;
}
}
case 3:
if (begin == NULL)
{
cout << "Стек пустой!" << endl;
repeat5:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat5;
}
}
else
{
clear(&begin);
cout << "Стек пуст!" << endl;
repeat6:
cout << "Желаете продолжить или выйти?" << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat6;
}
}
case 4:
if (begin == NULL)
{
cout << "Стек пустой!" << endl;
repeat7:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat7;
}
}
else
{
sort(begin);
cout << "Ваше стек:" << endl;
view(begin);
repeat8:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat8;
}
}
case 5:
return 0;
case 6:
if (begin == NULL)
{
cout << "Стек пустой!" << endl;
repeat9:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat9;
}
}
else
{
del_x2(&begin);
view(begin);
repeat13:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat13;
}
}
case 7:
if (begin == NULL)
{
cout << "Стек пустой!" << endl;
repeat11:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat11;
}
}
else
{
mmx(&begin);
view(begin);
repeat12:
cout << "Желаете вернуться или выйти? " << endl;
cout << "1. Да" << endl;
cout << "2. Нет" << endl;
cin >> b;
switch (b)
{
case 1:
system("cls");
goto play;
case 2: return 0;
default:
system("cls");
goto repeat12;
}
}
default:
system("cls");
goto play;
}
}
void sort(obj* p)
{
obj* t = NULL, * t1;
int r;
if (p->next == NULL)
{
cout << "Стек нельзя отсортировать!" << endl;
return;
}
do {
for (t1 = p; t1->next != t; t1 = t1->next)
if (t1->item > t1->next->item) {
r = t1->item;
t1->item = t1->next->item;
t1->next->item = r;
}
t = t1;
} while (p->next != t);
}
void clear(obj** begin)
{
obj* q = *begin;
while (*begin != NULL)
{
q = (*begin)->next;
(*begin)->item = NULL;
(*begin)->next = NULL;
free(*begin);
*begin = q;
}
}
void push(obj** begin, int in)
{
obj* q = NULL;
q = new obj();
q->item = in;
q->next = NULL;
if (*begin == NULL)
{
*begin = q;
}
else if (*begin != NULL)
{
q->next = *begin;
*begin = q;
}
}
void del_x2(obj** begin)
{
obj* start = *begin;
obj* prev = *begin;
obj* cle = NULL;
while (prev->item % 2 == 0)
{
*begin = (*begin)->next;
start = *begin;
cle = prev;
prev = *begin;
free(cle);
}
while (*begin != NULL)
{
if ((*begin)->item % 2 == 0)
{
prev->next = (*begin)->next;
cle = *begin;
*begin = (*begin)->next;
free(cle);
}
else
{
prev = *begin;
*begin = (*begin)->next;
}
}
*begin = start;
}
void mmx(obj** t)
{
obj* q = *t;
int max = 0;
int min = q->item;
while (q != NULL)
{
if (q->item > max)
{
max = q->item;
}
if (q->item < min)
{
min = q->item;
}
q = q->next;
}
q = *t;
while (q != NULL)
{
if (q->item == min)
{
q->item = max;
q = q->next;
continue;
}
if (q->item == max)
{
q->item = min;
q = q->next;
continue;
}
q = q->next;
}
t = &q;
}
void view(obj* begin)
{
obj* q = begin;
while (q != NULL)
{
cout << "\t" << q->item;
q = q->next;
cout << endl;
}
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Соседние файлы в папке 1 курс различные лабы и их куски. Что-то полезное тут есть