Advertisement
Heretiiik

Untitled

Oct 4th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. struct elem {
  7.     char value;
  8.     elem * next;
  9. };
  10.  
  11. // přidá znak 'val' do zásobníku 'head'
  12. void push (elem ** head, char val) {
  13.     elem * tmp = new elem;      // vytvoření nového prvku
  14.     tmp->next = nullptr;        // ukazatel zatím nikam neukazuje
  15.     tmp->value = val;           // nastavíme hodnotu
  16.  
  17.     if (*head == nullptr)       // je li zásobník prázdný
  18.         *head = tmp;            // nastavíme nový prvek na začátek
  19.     else {                      // není li prázdný
  20.         tmp->next = *head;      // nasstavíme nový prvek na začátek
  21.         *head = tmp;            // a začátek záobníku na nový prvek
  22.     }
  23. }
  24.  
  25. // odebere znak ze zásobníku, pokud je prázdný vrátí false, pokud ne, vrátí true a v out bude vytažená hodnota
  26. bool pop (elem ** head, char * out) {
  27.     if (*head == nullptr)       // je li zásobník prázdný
  28.         return false;           // konec
  29.     else {                      // není li prázdný
  30.         *out = (*head)->value;  // nastavíme výstupní hodnotu
  31.         elem * tmp = *head;     // ulozime si prvek který budeme mazat
  32.         *head = (*head)->next;  // nastavíme začátek zásobníku na druhý prvek
  33.         delete tmp;             // smažeme prvek, který už není potřžeba
  34.         return true;            // signalizace uspechu
  35.     }
  36. }
  37.  
  38.  
  39.  
  40. int main (void) {
  41.     elem * zasobnik = nullptr; // novy prazdny zasobnik
  42.  
  43.     char c;                    
  44.     while (cin.get(c)) {        // nacitej znaky dokud je co
  45.         if ( c == '\n')         // novy radek znaci koenc vstupu
  46.             break;              // konec nacitani
  47.         push(&zasobnik, c);     // hazej do zasobniku
  48.     }    
  49.  
  50.     while (pop(&zasobnik, &c)) {
  51.         if ((c >= 'A' && c <= 'Z') || c == ' ') // kontrola znaku, zdali odpovida
  52.             cout << c;                          // vypsani znaku
  53.         else {
  54.             cout << "chyba";                    // narazili jsme na nepovoleny znak
  55.             break;                              // ukoncime
  56.         }
  57.            
  58.     }
  59.     cout << '\n';
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement