#include #include #define NULL 0 #define TRUE 1 #define FALSE 0 #define TAMANHO_LINHA 80 #include #include #include #include #include "classStack.h" #include "DataArea.h" using namespace std; // // pilha #include "classSatckAsArray.h" void imprimir_pilha(const StackAsArray *); void imprimir_dado(Object * ); /*****************************************************************/ int main(int argc, char *argv[]) { StackAsArray pilha(100); DataArea * pDataArea; CString strLinha; int underflow, overflow; char transacao; char linha[TAMANHO_LINHA]; FILE *pf; pf=fopen("..\\DADOS\\arq9502.dat","r"); overflow = FALSE; underflow = FALSE; while (fgets(linha,TAMANHO_LINHA,pf) != NULL) { /* extracao dos dados da linha lida */ transacao = linha[0]; strLinha.Format( "%s", linha ); pDataArea = new DataArea( strLinha ); switch (transacao) { case 'i': { pilha.Push( *pDataArea ); printf("Registro incluido-> "); imprimir_dado( pDataArea ); break; } case 'e': { try { DataArea & dataArea = (DataArea&) pilha.Pop(); printf("Registro excluido-> "); imprimir_dado(&dataArea); } catch (const exception& e) { printf("Erro: %s\n", e.what() ); } break; } default: printf("%s","transacao diferente de 'i', 'e' ou 'f'\n"); } } getch(); fclose(pf); imprimir_pilha(&pilha); getch(); return 0; } /*****************************************************************/ void imprimir_pilha(const StackAsArray * pPilha ) { StackAsArray::Iter iter( *pPilha ); if (pPilha->IsEmpty()) { printf("pilha vazia\n"); } else { printf("\n\n\t\tpilha Final\n\n"); while ( !iter.IsDone() ) { imprimir_dado( &(*iter) ); ++iter; } } } /*****************************************************************/ void imprimir_dado(Object * pDataArea) { ( (DataArea*) pDataArea )->imprime(); }