Ir para conteúdo
Fórum Script Brasil

jobis

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que jobis postou

  1. Boa tarde! Gostaria de uma ajuda em um exercício que estou fazendo. Vou disponibilizar o exercício, e o código que já fiz. Preciso de ajuda pois o exercício precisa ser entregue ainda hoje 31/05/19 e já tentei de tudo quanto é forma resolver. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <tchar.h> #include <locale.h> //Constante que define o tamanho máximo da estrutura de dados #define tamanho 3 typedef struct tipo_proc{ char nome[10]; int PID ; }tipo_proc; tipo_proc proc; //Declaração do tipo_pilha: estrutura de dados typedef struct tipo_pilha { tipo_proc dados[tamanho]; int ini; int topo; }tipo_pilha; //Criando uma variável tipo_pilha tipo_pilha pilha; //Função que empilha um novo elemento no topo void empilha(tipo_proc elemento) { //Verificando se existe alguma posição disponível para uma inserção if(pilha.topo == tamanho) { //Se a pilha estiver cheia, não é possível empilhar printf("Pilha cheia.\n"); system("pause"); } else { //Se a pilha não estiver cheia: // Adicione o novo elemento no topo // Incremente o topo pilha.dados[pilha.topo] = elemento; pilha.topo++; proc.PID++; } } /* Função que desempilha e retorna o elemento do topo */ tipo_proc desempilha(){ //Variável que guarda um "backup" do elemento desempilhado tipo_proc elemento; int i; //Verificando se existe algum elemento disponível para uma remoção if(pilha.topo == 0) { //Se a pilha estiver vazia, não será possível desempilhar printf("A Pilha está vazia.\n"); system("pause"); } else { //Decrementa-se o "topo". //Se a pilha não estiver vazia // Guarda um backup do elemento a ser removido; //'Arrata os elementos do "topo em direção ao "início" //Nesse passo, o elemento que estava no "início" da fila será sobrescrito for(i=0; i<tamanho; i++) pilha.dados = pilha.dados[i+1]; pilha.topo--; elemento = pilha.dados [pilha.topo]; //Retorne o elemento que estava no "topo" return elemento ; } } int main() { _tsetlocale(LC_ALL,_T("portuguese")); int i; int opcao=0; tipo_proc processo; tipo_proc backup; pilha.topo=0; pilha.ini=0; processo.PID =1 ; do{ printf("Opcoes:\n"); printf(" 1 - Inserir um elemento novo na pilha\n"); printf(" 2 - Remover um elemento da pilha\n"); printf(" 3 - Esvaziar a pilha\n"); printf(" 0 - Encerrar o programa\n"); printf(" Entre com a sua opcao: "); scanf("%d", &opcao); /*Le a opcao do usuario*/ switch (opcao) { //Inserir um elemento na pilha case 1: for(i=0;i<=3;i++) { printf("\nPID: %d - Nome: %s",pilha.dados [pilha.topo].PID,pilha.dados [pilha.topo].nome); scanf (" %s", &processo.nome); empilha(processo); } /*fflush(stdin);*/ break; case 2: printf("\nRemover um elemento da pilha:\n"); printf("PID: %d - Nome: %s\n", backup.PID, backup.nome); backup = desempilha(); fflush(stdin); break; case 3: printf("\n Esvaziar a pilha\n"); fflush(stdin); break; } }while(opcao!=0); }
×
×
  • Criar Novo...