#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("\nВГаражеНЕТмашин!!!")<<endl;
return;
}
while(p)
{
p->a.marka;
p = p->next;
k++;
}
cout<<rus("\n\tВгараже"); if(k<5) cout<<k<<rus(" машины")<<endl;
else cout<<k<<rus(" машин")<<endl;
p = u;
SetConsoleTextAttribute(hConsole, 11);
cout<<rus("\n ГАРАЖ:")<<endl;
while(p)
{
cout<<"\t* ";
cout << p->a.marka<<endl;
p = p->next;
}
cout<<"\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("\n\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 << "\t***** * ***** * * * *" << endl;
cout << "\t* * * * * * * * * * " << endl;
cout << "\t* * * * * * * *** " << endl;
cout << "\t* ***** ***** ***** *** " << endl;
cout << "\t* * * * * * * * * " << endl;
cout << "\t* * * * * * * * *" << endl;
SetConsoleTextAttribute(hConsole, 7);
cout << "\n" << endl;
Stek *u=NULL;
int n;
Avto x; //переменная x типа avto
do{
SetConsoleTextAttribute(hConsole, 14);
cout<<rus(" ***********************\n * \tМеню:")<<endl;
cout<<rus(" * 1. Приехала новая машина")<<endl;
cout<<rus(" * 2. Печатать гараж")<<endl;
cout<<rus(" * 3. Машина выезжает")<<endl;
cout<<rus(" * 0. Выход")<<endl;
cout<<rus(" ***********************")<<endl;
cout<<rus("\n\tЗадайте действие: ");
cin>>n;
SetConsoleTextAttribute(hConsole, 7);
switch (n)
{
case 1: cout<<rus("Введитеновоеавто: ");vvod(x);
dobavlenie(&u, x); cout<<rus("\nАвтоДобавлено!\a\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
.Конспект лекций по дисциплине «Программирование на языках высокого уровня».