Ir para conteúdo
Fórum Script Brasil

jobis

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por jobis

  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);


    }

     

    Exercício Pilha.png

×
×
  • Criar Novo...