Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.doc
Скачиваний:
2
Добавлен:
04.09.2019
Размер:
223.23 Кб
Скачать

Int info;

wcout<<L"Введите число для добавления в множество: "; cin>>info;

if (prov(info)) {wcout<<L"\nтакой элемент уже есть в множестве! \n"; oshow(); return;}

if (count++==-1) nach=(int *)malloc(sizeof(int));

else {

int *tmp=(int*)realloc(nach,(count+1)*sizeof(int));

if (tmp==NULL) {wcout<<L"Недостаточно памяти!"; getch(); return;}

nach=tmp;

}

nach[count]=info;

}

void odel(){

Int info;

wcout<<L"Введите число для удаления из множества: "; cin>>info;

oshow();

int i,k=-1;

for (i=0; i<=count;++i) if (nach[i]==info) {k=i; break;}

if (k==-1) {wcout<<L"\nДанный элемент отсутствует в множестве!"; getch(); return;};

for (int j=k;j<count;nach[j]=nach[j+1],++j);

--count;

if (count<0) free(nach);

else {int*tmp=(int*)realloc(nach,(count+1)*sizeof(int));}

wcout<<L"\nчисло удалено! посмотрим состояние множества: ";

oshow();

}

  1. Листинг программы

----------------------Задание 1----------------------

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <conio.h>

using namespace std;

struct sp {

int ch;

sp *next,*last;

};

sp *nach;

void sshow(){

sp *tmp=nach;

wcout<<L"Какие элементы хранятся в очереди: \n\r";

while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).next;}

getch();

}

void snew(){

sp *tmp,*now;

int info;

wcout<<L"Введите число для добавления в очередь: ";

cin>>info;

tmp=nach;

if (tmp!=NULL) while ((*tmp).next!=NULL) tmp=(*tmp).next;

now=tmp;

tmp=(sp *)malloc(sizeof(sp));

if (now==NULL) {nach=now=tmp; (*tmp).last=NULL;}

else {(*now).next=tmp; (*tmp).last=now;}

(*tmp).ch=info;

(*tmp).next=NULL;

now=tmp;

wcout<<L"\nЧисло добавленно в очередь!";

getch();

}

void sdel(){

sp *tmp;

int info;

sshow();

if (nach==NULL) {wcout<<L"\nОчередь пуста - возвращаемся в меню!"; getch(); return ;}

wcout<<L"\nВведите, число которое хотите удалить: "; cin>>info;

tmp=nach;

while (tmp!=NULL && (*tmp).ch!=info) tmp=(*tmp).next;

if (tmp==NULL) {wcout<<L"\nТакого элемента нет - возвращаемся в меню!"; getch(); return ;}

if (tmp==nach) nach=(*tmp).next;

if ((*tmp).last!=NULL) (*(*tmp).last).next=(*tmp).next ;

if ((*tmp).next!=NULL) (*(*tmp).next).last=(*tmp).last ;

free(tmp);

wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";

sshow();

}

void ex(){

exit(0);

}

int main(){

nach=NULL;

wcout.imbue(locale(".866"));

void (*menu[4])()={sshow,snew,sdel,ex};

int k=0,c;

while (1) {

wcout<<L"Меню:";

wcout<<L"\n\r№1-Просмотрим очередь ";

if (k==0) cout<<'V';

wcout<<L"\n\r№2-добавим элемент ";

if (k==1) cout<<'V';

wcout<<L"\n\r№3-удаления элемента по значению ";

if (k==2) cout<<'V';

wcout<<L"\n\r№4-выход ";

if (k==3) cout<<'V';

c=getch();

if ((c=='w') || (c=='W')) if (k>0) --k;

if ((c=='s') || (c=='S')) if (k<3) ++k;

if (c==13) {system("cls"); menu[k](); }

system("cls");

}

return 0;

}

----------------------Задание 2----------------------

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <conio.h>

using namespace std;

struct sp {

int ch;

sp *last;

};

sp *endst;

void sshow(){

sp *tmp=endst;

wcout<<L"Какие элементы хранятся в стеке: \n\r";

while (tmp!=NULL) {printf("%d, ",(*tmp).ch); tmp=(*tmp).last;}

getch();

}

void snew(){

sp *tmp;

int info;

wcout<<L"Введите число для добавления в стек: ";

cin>>info;

tmp=(sp *)malloc(sizeof(sp));

if (endst==NULL) {endst=tmp; (*tmp).last=NULL;}

else (*tmp).last=endst;

(*tmp).ch=info;

endst=tmp;

wcout<<L"\nЧисло добавленно в стек!";

getch();

}

void sdel(){

sp *tmp;

sshow();

if (endst==NULL) {wcout<<L"\nСтек пуст - возвращаемся в меню!"; getch(); return ;}

tmp=endst;

endst=(*endst).last;

free(tmp);

wcout<<L"\nПосле удаления элемента очередь приобрела вид: \n";

sshow();

}

void ex(){

exit(0);

}

int main(){

endst=NULL;

wcout.imbue(locale(".866"));

void (*menu[4])()={sshow,snew,sdel,ex};

int k=0,c;

while (1) {

wcout<<L"Меню:";

wcout<<L"\n\r№1-Просмотрим стек ";

if (k==0) cout<<'V';

wcout<<L"\n\r№2-добавим элемент в стек ";

if (k==1) cout<<'V';

wcout<<L"\n\r№3-удаления элемента ";

if (k==2) cout<<'V';

wcout<<L"\n\r№4-выход ";

if (k==3) cout<<'V';

c=getch();

if ((c=='w') || (c=='W')) if (k>0) --k;

if ((c=='s') || (c=='S')) if (k<3) ++k;

if (c==13) {system("cls"); menu[k](); }

system("cls");

}

return 0;

}

----------------------Задание 3---------------------

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <conio.h>

using namespace std;

int count,*nach;

void oshow(){

wcout<<L"\nЭлементы, которые хранятся в множестве: \n";

for (int i=0;i<=count; cout<<nach[i++]<<", ");

getch();

}

int prov(int info){

for(int i=0;i<=count;++i) if (nach[i]==info) return 1;

return 0;

}

void onew(){

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]