Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. //do lifo.cpp
  2. #include <string.h>
  3. #include <iostream>
  4. #include <stdlib.h>
  5.  
  6. #include "lifo.h"
  7.  
  8.  
  9.  
  10. using namespace std;
  11.  
  12.  
  13.  
  14. /**
  15. * @brief Zobrazí obsah zásobníka.
  16. * Slúži len pre potreby zorazenia obsahu celého zásobníka.
  17. * Funkcia žiadnym spôsobom nemodifikuje zásovník.
  18. * @param zasobnik odkaz na LIFO
  19. */
  20. void show(LIFO &zasobnik) {
  21.     cout<<"|";
  22.     for(int i=0; i<zasobnik.vrchol; i++) {
  23.         cout<<zasobnik.pamat[i]<<"|";
  24.     }
  25.     cout<<endl;
  26. }
  27.  
  28. /**
  29. * @brief do zásobníka vloží novú hodnotu.
  30. * @param zasobnik zásobník, do ktorého budeme vladať novú hodnotu.
  31. * @param x hodnota, ktorú vkladáme do zásobníka.
  32. * @retval stav zásobníka (@see stav_zasobnika). Pri vkladaní môže nastať prípad: OK, FULL
  33. */
  34. stav_zasobnika push(LIFO &zasobnik,double x) {
  35.     if(zasobnik.vrchol<MAX_PAMAT) {
  36.         zasobnik.pamat[zasobnik.vrchol++]=x;
  37.         show(zasobnik);
  38.     } else
  39.         return FULL;
  40.     return OK;
  41. }
  42.  
  43.  
  44.  
  45. double pop(LIFO &zasobnik) {
  46.     if(zasobnik.vrchol>0)
  47.         return zasobnik.pamat[--zasobnik.vrchol];
  48.     else
  49.         return EMPTY;
  50. }
  51.  
  52. /*
  53. int main() {
  54.     LIFO f;
  55.     f.vrchol=0;
  56.     int j, i;
  57.     char vyraz[40];
  58.     char buffer[16];
  59.     cin.getline(vyraz,59);
  60.     double x;
  61.     int N=(int)strlen(vyraz);
  62.     for(i=0; i<N; i++) {
  63.  
  64.  
  65.     }
  66.  
  67.     cout<<pop(f);
  68.  
  69. } */
  70.  
  71. //do main.cpp
  72. #include <string.h>
  73. #include <iostream>
  74. #include <stdlib.h>
  75.  
  76. #include "lifo.h"
  77.  
  78. using namespace std;
  79.  
  80. int main()
  81. {
  82.     LIFO f;
  83.     f.vrchol=0;
  84.    
  85.     int j, i;
  86.     char vyraz[40];
  87.     char buffer[16];
  88.     cin.getline(vyraz,59);
  89.     double x;
  90.     int N=(int)strlen(vyraz);
  91.     for(i=0; i<N; i++)
  92.     {
  93.     }
  94.  
  95.     push (f,2);
  96.     cout<<pop(f);
  97.  
  98. }
  99.  
  100. //do lifo.h
  101. #ifndef LIFO_H_INCLUDED
  102. #define LIFO_H_INCLUDED
  103.  
  104. /** @brief Maximálna kapaita zásobníka LIFO.*/
  105. #define MAX_PAMAT 20
  106.  
  107. /**
  108. * @brief Enumenrácia pre reprezentáciu stavu zásobníka LIFO.
  109. */
  110. typedef enum {
  111.     /** Stav OK. V príapde že vrchol zásobníka je v intervale <0,MAX_PAMAT) */
  112.     OK,
  113.     /** Stav FULL. Môže nastať pri pridávaní položky do zásobníka. Ak vrchol>=MAX_PAMAT */
  114.     FULL,
  115.     /** Stav EMPTY. Môže nastať pri vývere zo zásobníka - pri pokuse o výber z prázdneho zásobníka. */
  116.     EMPTY
  117. } stav_zasobnika ;
  118.  
  119. /**
  120. * @brief Definícia dátového typu LIFO - zásobník.
  121. * Zásobník je implementovaný pomocou jednorozmerného poľa celých čísel.
  122. * Kapacita zásobníka je @see MAX_PAMAT
  123. */
  124. typedef struct {
  125.     /** Pole reálnych čísel pre reprezentáciu zásobníka. */
  126.     double pamat[ MAX_PAMAT ];
  127.     /** Index, ktorý obsahuje hodnotu indexu voľného prvku poľa pamat. */
  128.     int vrchol;
  129. } LIFO;
  130.  
  131. void show(LIFO &zasobnik);
  132. stav_zasobnika push(LIFO &zasobnik,double x);
  133. double pop(LIFO &zasobnik);
  134.  
  135. #endif // LIFO_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement