#include struct Stack { int* stack; int size = 0; int Capasity = 0; Stack() {} Stack(int aCapasity) { stack = new int[aCapasity]; Capasity= aCapasity; } ~Stack() { delete stack; } bool push(int var) { if (size < Capasity) { stack[size] = var; size++; return true; } else { printf("Error, Size == Capasity, use Stack(N) to resize stack"); return false; } } int pop() { if (size > 0) { size--; return stack[size]; } else { printf("Error, No elements"); return -1; } } int peek() { if (size > 0) return stack[size - 1]; else { printf("Error, No elements"); return -1; } } void showStack() { int size_temp = size; for (; size > 0; size--) { printf("%d ", stack[size - 1]); } printf("\n"); size = size_temp; } }; struct Node { char* name = new char[6]; float sumary; int amount; Node(char* name, float sumary, int amount) :name(name), sumary(sumary), amount(amount) { } Node() {} }; int main() { int command; stack node; for (;;) { printf("Input command:\n 1 - add,\n 2 - delete last,\n 3 - show all,\n 4 - exit\n"); scanf("%d", &command); switch (command) { case 1: char name[6]; float sumary; int amount; printf("Enter name: "); scanf("%s", &name); printf("Enter sumary: "); scanf("%f", &sumary); printf("Enter amount: "); scanf("%d", &amount); node.push(Node(name, sumary, amount)); break; case 2: node.pop(); printf("The last have been deleted"); break; case 3: while (!example.empty()) { Node temp = example.top(); example.pop(); cout << temp.name << " " << temp.sumary << " " << temp.amount << endl; } break; case 4: return 0; default: printf("Wrong command..."); break; } } }