Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by 312 ( 14 years ago )
#include <iostream>

using namespace std ;

class avto 
{
public:
 int number ;
 char name[4] ;
 avto ():number(000) 
 {
  strcpy (name, "ooo") ;
 } 
 avto ( int num, char* nam ): number(num) 
 {
  strncpy (name, nam, 3) ;
  name[3] = '\0' ;
 } ;
 void print () 
 {
  cout << name[0] << number << name[1] << name[2]  ;
 }
 bool operator != (avto& h)
 {
  if ( number != h.number && name != h.name )
   return true ;
  else
   return false ;
 }
};

template <class Data>
class stack 
{
private:
 struct node {
  Data data ;
  int count ;
  node* next ;
 };
 node* top ;
public:
 stack () ;
 ~stack () ;
 void add ( Data, int =-1 ) ;
 Data exec &#40;&#41; ;
 void remove ( Data ) ;
 void print () ;
};
template <class Data> 
stack<Data>::stack () {
 top = 0 ;
}
template <class Data>
stack<Data>::~stack () {
 stack::node* temp = top ;
 while ( temp = top ){
  top = top->next ;
  delete temp ;
 }
}
template <class Data>
void stack<Data>::add ( Data d, int c=-1 ) {
 node* temp = new node ;
 temp->next = top ;
 top = temp ;
 top->data = d ;
 top->count = c+1 ;
}
template <class Data>
Data stack<Data>::exec &#40;&#41; {
 node* temp = top ;
 if ( !top )
  return avto() ;
 top = top->next ;
 Data d = temp->data ;
 delete temp ;
 return Data(d) ;
}
template <class Data>
void stack<Data>::remove ( Data d ) {
 int c ;
 stack tempStack ;
 c = top->count ;
 Data temp = exec &#40;&#41; ;
 while ( d != temp ) {
  tempStack.add (temp, c) ;
  if ( top ) {
   c = top->count ;
   temp = exec &#40;&#41; ;  
  }
  else
   break ;
 } 
  do {
   if ( tempStack.top ) {
   c = tempStack.top->count ;
   temp = tempStack.exec &#40;&#41; ;
   add (temp, c) ;
   }
   else
    break ;
 }while ( 1 ) ;
}
template <class Data>
void stack<Data>::print () {
 node* temp = top ;
 while (temp){
  cout << temp->data << "(" << temp->count/2 << ")" << ' ' ;
  temp = temp->next ;
 }
 cout << endl ;
}

void stack<avto>::print () {
 node* temp = top ;
 while ( temp ){
  temp->data.print () ;
  cout << '(' << temp->count/2 << ')' ;
   cout << ' ' ;
  temp = temp->next ;
  
 }
 cout << endl ;
}

//----------------------------------------------------------------------
//----------------------------------------------------------------------
void menu ( stack<avto> moby ) {
 int action = 99 ;
 while (action) {  
  system &#40; "cls" &#41; ;
  moby.print () ;
  cout << "Выберите действие:"
   << "\n1-Добавить машину"
   << "\n2-Извлечь последнюю машину"
   << "\n3-извлечь машину из середины\n>: " ;
  cin >> action ;
  switch (action){
   case 1 : {
    system &#40; "cls" &#41; ;
    cout << "Вы выбрали Добавить машину. \nВведите номерной знак:" ;
    char znak[7] ;
    cin >> znak ;
    znak[6] = '\0' ;
    int z1 = atoi(&znak;[1]) ;
    char z2[4] ;
    z2[0] = znak[0] ;
    z2[1] = znak[4] ;
    z2[2] = znak[5] ;
    z2[3] = '\0' ;
    avto automobile (z1, z2) ;
    moby.add (automobile) ;
    break ;
   }
   case 2 : {
    avto automobile = moby.exec &#40;&#41; ;
    break ;
   }
   case 3 : {
    system &#40; "cls" &#41; ;
    moby.print () ;
    cout << "Вы выбрали извлечь машину из середины.\nВведите номерной знак:" ;
    char znak[7] ;
    cin >> znak ;
    znak[6] = '\0' ;
    int z1 = atoi(&znak;[1]) ;
    char z2[4] ;
    z2[0] = znak[0] ;
    z2[1] = znak[4] ;
    z2[2] = znak[5] ;
    z2[3] = '\0' ;
    avto automobile (z1, z2) ;
    moby.remove (automobile) ;
    break ;
   }
   default : {
    action = 0 ;
   }
  }
 }
}
void main () {
 setlocale ( LC_ALL, "RUSSIAN" ) ;
 
 stack<avto> moby ;
 menu (moby) ;
 

 system &#40; "Pause" &#41; ;
 return ;
}

 

Revise this Paste

Your Name: Code Language: