Смекни!
smekni.com

Динамические структуры данных (стр. 2 из 2)

#include <windows.h>

#include <string.h>namespace std;hConsole=GetStdHandle(STD_OUTPUT_HANDLE);

Avto

{

char marka[10];

};Stek

{

Avto a;

Stek *next;

};

bufer [255];*rus (char*s)

{

CharToOem (s, bufer);

return bufer;

}

vvod(Avto &x)

{

cin>>x.marka;

}

Print(Stek *u)

{

int k=0;

Stek *p = u;

if(p==0)

{

cout<<rus("&bsol;nВГаражеНЕТмашин!!!")<<endl;

return;

}

while(p)

{

p->a.marka;

p = p->next;

k++;

}

cout<<rus("&bsol;n&bsol;tВгараже"); if(k<5) cout<<k<<rus(" машины")<<endl;

else cout<<k<<rus(" машин")<<endl;

p = u;

SetConsoleTextAttribute(hConsole, 11);

cout<<rus("&bsol;n ГАРАЖ:")<<endl;

while(p)

{

cout<<"&bsol;t* ";

cout << p->a.marka<<endl;

p = p->next;

}

cout<<"&bsol;t********"<<endl;

SetConsoleTextAttribute(hConsole, 7);

}

dobavlenie(Stek **u, Avto &x)

{

Stek *t=new Stek;

strcpy(t->a.marka, x.marka);

t->next=*u;

*u=t;

}

Zabiraem(Stek**u, Avto &x)

{

if(*u==NULL){

return false;

}

Stek*t=*u;

strcpy(x.marka, t->a.marka);

*u=t->next;

delete t;

return true;

}

vyezjaet_iz_garaja(Stek**u)

{

Stek *v=NULL;

Avto x;

char n[7];

cout<< rus("&bsol;n&bsol;t Введите машину, которая выезжает:");

cin>>n;

while(*u)

{

if(Zabiraem(u, x))

{

if(strcmp(n, x.marka)==0)

{

cout<< rus(" машина") << n; cout<<rus(" уехала!!!");

while(Zabiraem(&v, x)) /// возвращаем элементы из стека V в стек U

dobavlenie(u, x);

return;

}

else

{

dobavlenie(&v, x);

}

}

else break;

}

SetConsoleTextAttribute(hConsole, 12);

cout <<rus(" ВгаражеНЕТмашины")<<n<<endl;

SetConsoleTextAttribute(hConsole, 7);

while(Zabiraem(&v, x))

dobavlenie (u, x);

}

Clear(Stek **u)

{

if(*u == 0) return;

Stek *p = *u;

Stek *t;

while(p)

{

t = p;

p = p->next;

delete t;

}

*u = 0;

}

main()

{

SetConsoleTextAttribute(hConsole, 10);

cout << "&bsol;t***** * ***** * * * *" << endl;

cout << "&bsol;t* * * * * * * * * * " << endl;

cout << "&bsol;t* * * * * * * *** " << endl;

cout << "&bsol;t* ***** ***** ***** *** " << endl;

cout << "&bsol;t* * * * * * * * * " << endl;

cout << "&bsol;t* * * * * * * * *" << endl;

SetConsoleTextAttribute(hConsole, 7);

cout << "&bsol;n" << endl;

Stek *u=NULL;

int n;

Avto x; //переменная x типа avto

do{

SetConsoleTextAttribute(hConsole, 14);

cout<<rus(" ***********************&bsol;n * &bsol;tМеню:")<<endl;

cout<<rus(" * 1. Приехала новая машина")<<endl;

cout<<rus(" * 2. Печатать гараж")<<endl;

cout<<rus(" * 3. Машина выезжает")<<endl;

cout<<rus(" * 0. Выход")<<endl;

cout<<rus(" ***********************")<<endl;

cout<<rus("&bsol;n&bsol;tЗадайте действие: ");

cin>>n;

SetConsoleTextAttribute(hConsole, 7);

switch (n)

{

case 1: cout<<rus("Введитеновоеавто: ");vvod(x);

dobavlenie(&u, x); cout<<rus("&bsol;nАвтоДобавлено!&bsol;a&bsol;n"); break;

case 2: Print(u); break;

case 3: Print(u); vyezjaet_iz_garaja(&u); break;

case 0: Clear(&u); break;

default: SetConsoleTextAttribute(hConsole, 12);

cout<<rus("Нет такого ЧИСЛА!!!")<<endl;

SetConsoleTextAttribute(hConsole, 7);

}

cout<<endl;

}while (n!=0);

return 0;

}

Список литературы

1.И.Ш. Хабибуллин Программирование C++: Пер. с англ. - 3-е изд. - СПб.: БХВ-Петербург, 2006. - 512 с.

2.Сайт: www.victor192007.narod.ru

.Конспект лекций по дисциплине «Программирование на языках высокого уровня».