Главная страница

ОАИП 2 лабораторная. 2 лаба оаип2. Лабораторная работа 2 "Работа с очередями"


Скачать 71.91 Kb.
НазваниеЛабораторная работа 2 "Работа с очередями"
АнкорОАИП 2 лабораторная
Дата19.05.2021
Размер71.91 Kb.
Формат файлаdocx
Имя файла2 лаба оаип2.docx
ТипЛабораторная работа
#207207

Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ


Инженерно-экономический факультет

Лабораторная работа №2
“Работа с очередями”

Вариант 12

Разработайте программу, позволяющую работать с очередью, каждый узел которой должен хранить информацию, задаваемую одной из структур согласно варианту задания.

Программа не должна содержать глобальных переменных и указателей и должна быть снабжена системой меню для выполнения следующих операций:

1. Начальное формирование очереди (создание самого первого узла)

2. Добавление нового узла в конец очереди

3. Удаление первого узла из очереди с возвратом данных, которые он содержал

4. Вывод данных из всех узлов очереди на экран

5. Определение длины очереди

6. Очистка очереди (удаление всех узлов)

7. Завершение работы программы

Необходимо также обеспечить надежность работы программы с учетом возможности неправильных действий пользователя.

12.

struct node

{

char fio[20]; //фамилия и инициалы больного

int kartochka; //номер карточки

char vrach[20]; //фамилия и инициалы врача

node *next; //указатель на следующий узел

};
Header.h

#include

#include

#include

#include

#include
struct node {

char fio[20]; //фамилия и инициалы больного

int kartochka; //номер карточки

char vrach[20]; //фамилия и инициалы врача

node* next; //указатель на следующий узел

};

void first(struct node**, struct node**);

void add(struct node**);

node* del(struct node**);

void print(struct node*);

int size(struct node*);

void cleaning(struct node**, struct node**);
Func.cpp
#include "Header.h"

void first(struct node** begin, struct node** end) {

node* p = new node;

system("cls");

printf("Введите фамилию больного:\n");

fflush(stdin);

gets_s(p->fio);

printf("Введите карточку больного:\n");

scanf_s("%d", &p->kartochka);

getchar();

fflush(stdin);

printf("Введите фамилию врача:\n");

fflush(stdin);

gets_s(p->vrach);

p->next = NULL;

*begin = *end = p;

}

void add(struct node** end) {

node* p = new node;

system("cls");

printf("Введите фамилию больного:\n");

fflush(stdin);

gets_s(p->fio);

printf("Введите карточку больного\n");

scanf_s("%d", &p->kartochka);

getchar();

printf("Введите фамилию больного:\n");

fflush(stdin);

gets_s(p->vrach);

p->next = NULL;

(*end)->next = p;

*end = p;

}

node* del(node** begin)

{

node* c = new node;

c->kartochka = (*begin)->kartochka;

strcpy_s(c->fio, (*begin)->fio);

strcpy_s(c->vrach, (*begin)->vrach);

node* p = *begin;

*begin = p->next;

delete(p);

return c;

}

void print(struct node* begin)

{

node* p = begin;

while (p != NULL) {

printf("%s\n", p->fio);

printf("%d\n ", p->kartochka);

printf("%s\n", p->vrach);

p = p->next;

}

}

int size(struct node* begin)

{

int length = 0;

node* p = begin;

while (p != NULL) {

length++;

p = p->next;

}

return length;

}

void cleaning(struct node** begin, struct node** end)

{

node* k;

node* p = *begin;

while (p != 0)

{

k = p;

p = p->next;

*begin = (*begin)->next;

if (*begin == NULL)

*end = NULL;

delete k;

}

}

Main.cpp
#include "Header.h"

void main()

{

system("chcp 1251");

node* begin = NULL, * end = NULL;

int k = 0, length = 0;

while (1) {

system("cls");

printf("1.Начальное формирование очереди (создание самого первого узла):\n");

printf("2.Добавление нового узла в конец очереди:\n");

printf("3.Удаление первого узла из очереди:\n");

printf("4.Вывод данных из всех узлов очереди на экран:\n");

printf("5.Определение длины очереди:\n");

printf("6.Очистка очереди (удаление всех узлов):\n");

printf("7.Завершение работы программы\n");
switch (_getch()) {

case'1':

system("cls");

if (begin == 0)

first(&begin, &end);

else

printf("Уже создан первый узел очереди\n");

system("pause");

break;

case'2':

system("cls");

if (end != 0)

add(&end);

else

printf("Не создан первый узел очереди\n");

system("pause");

break;

case'3':

system("cls");

del(&begin);

printf("Узел успешно удален!\n");

system("pause");

break;

case'4':

system("cls");

if (begin == 0)

printf("Очередь пуста\n");

else {

puts("Вывод данных из всех узлов очереди на экран.");

print(begin);

}

system("pause");

break;

case'5':

system("cls");

puts("Определение длины очереди.");

printf("%d",size(begin));

system("pause");

break;

case'6':

system("cls");

cleaning(&begin, &end);

if (begin == NULL)

printf("Очередь очищена\n");

system("pause");

break;

case'7':

return;

default:

system("cls");

printf("Введите другое число:\n");

system("pause");
}

}

}

При выборе формирований очереди (пункт 1):



При добавлении нового узла (пункт 2):



написать администратору сайта