Z góry proszę tylko o podpowiedź !
Chcę zoptymalizować program korzystając z bibliotek proszę o podpowiedź jakich mógłbym do tego użyć. Program pokazuje działania stosu. Dodawanie do niego elementów i usuwanie.
Plik nagłówkowy:
#ifndef P_H_
#define P_H_
typedef int Item;
class Stos
{
private:
enum {MAX=10}; //stała zasięgu klasy
Item items[MAX];
int top;
public:
Stos();
bool isempty() const;
bool isfull() const;
bool push(const Item & item);
bool pool(const Item & item);
};
#endif
Deklaracje:
#include "p.h"
Stos::Stos() { top=0; }
bool Stos::isempty() const { return top == 0; }
bool Stos::isfull() const { return top == MAX; }
bool Stos::push(const Item & item)
{
if(top < MAX)
{ items[top++] = item;
return true; }
else
return false;
}
bool Stos::pool (const Item & item)
{
if(top > 0)
{ items[--top] = item;
return true ; }
else
return false;
}
Plik główny:
#include "p.h"
#include <iostream>
#include <cctype>
int main()
{
Stos box;
char letter;
int value;
std::cout << "Wcisniej A (żeby wprowadzić deklarację), S (żeby przetworzyć deklarację) lub D (żeby zako”czyć)\n";
while(std::cin >> letter && toupper(letter) != 'D')
{
while(std::cin.get() != '\n')
continue;
if(!isalpha(letter))
{ std::cout << 'a'; continue; }
switch(letter)
{
case 'A':
case 'a': std::cout << "Podaj nr nowej deklaracji: ";
std::cin >> value;
if(box.isfull())
std::cout << "Stos jest pełny\n";
else
box.push(value);
break;
case 'S':
case 's': if(box.isempty())
std::cout << "Stos jest pusty\n";
else {
box.pool(value);
std::cout << "Deklaracja nr " << value << " została zdjęta\n"; }
break;
}//switch
std::cout << "Wcisniej A (żeby wprowadzić deklarację), S (żeby przetworzyć deklarację) lub D (żeby zako”czyć)\n";
}//while
std::cout << "Koniec programu!\n\n";
return 0;
}//main