Ir ao conteúdo
  • Cadastre-se

argolo.david

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

posts postados por argolo.david

  1. Fiquei pegado nessa parte, meu retorno é sempre o primeiro PID:

    //FUNÇÃO DE RETORNO PARA MOSTRAR A PILHA
    void mostrar_pilha()
    {
        int i;
        printf("\nSua pilha: \n\n");
        for (i = 0; i < pilha.topo; i++) {
             printf("PID : %d - nome :%s\n\n",pilha.dados[pilha.ini].PID,pilha.dados[pilha.ini].nome );         
        }
    }

    image.png.4f957704ce8deb598b191dcf535d8717.png

  2. @Flávio Pedroza irmão, sua dica foi top. Agora so falta a função sair.

    Coloquei assim:


    // FUNÇÃO PARA SAIR DA PILHA

    void pilha_sair()
    {
        int i;
        
        if pilha.dados[pilha.topo-1] = 0;
            pilha.topo--;
    }
    (...)

    switch (op)

    (...)

    case 4 :
                      
                      pilha_sair (); //metodo sair

     

  3. @Flávio Pedroza

    Flavio, obrigado pela dica. Ja deu uma melhorada, mas inda não consigo utilizar.

    A pilha esta vindo cheia, então nao consigo usar o programa.

    se puder me ajudar, agradeço.

    Segue abaixo o retorno da tela.

    image.png.52acd4ade912b8f3ce402d6efaeac5e0.png

    #include <stdlib.h>
    #include <stdio.h>
    #include <locale.h>
    #include <string.h>
    #include <iostream>
    #include <iomanip>

    // DEFININDO O TAMANHO
    #define tamanho 5

    //DECLARANDO A ESTRUTURA
    typedef struct tipo_proc {
        char nome[10];
         int PID;     
    } tipo_proc;


    typedef struct tipo_pilha {
        tipo_proc dados [tamanho];
        int topo;
        int ini; 
    } tipo_pilha; 

    // VARIÁVEIS GLOBAIS
    tipo_pilha pilha;
    int op;

    //FUNÇÃO DE RETORNO PARA MOSTRAR A PILHA
    void mostrar_pilha()
    {
        int i;
        printf("\nSua pilha: \n\n");
        for (i = 0; i < tamanho; i++) {
             printf("%d \n", pilha.dados);
        }
    }

    //FUNÇÃO PARA EMPILHAR OS ELEMENTOS
    void empilhando(tipo_proc elemento)
    {        
        if (pilha.topo == tamanho) {
             printf("A pilha está cheia, impossivel empilhar!");
             system("pause");
        }

        else {         
             pilha.dados[pilha.topo] = elemento;         
             pilha.topo++;                     

                 }
    }

    //FUNÇÃO PARA DESEMPILHAR OS ELEMENTOS
    tipo_proc desempilhando()
    {
            tipo_proc elemento;
        if (pilha.ini == pilha.topo) {
             printf("A pilha está vazia, impossivel desempilhar!\n");
             system("pause");
        }
        else {
             elemento = pilha.dados[pilha.topo];
             for(int i=0; i<tamanho; i++)
             pilha.dados[pilha.topo]=elemento;
             pilha.topo--;
             return elemento;         
        }
    }

    // FUNÇÃO PARA ESVAZIAR A PILHA

    void esvaziar_pilha()
    {

        int i;

        if (pilha.topo == pilha.ini) {
             printf("A pilha esta vazia, impossivel esvaziar!\n\n");
             system("pause");
        }

        else {

             for (i = 0; i < tamanho; i++)
            {
                 pilha.dados[pilha.topo];
                 pilha.topo--;
            }
        }
    }

    int main()
    {
        setlocale(LC_ALL, "Portuguese");
        pilha.topo = 0;
        pilha.ini = 0;
        tipo_proc processo;
        processo.PID = 0;
        mostrar_pilha();
            op = 1; //acrescentar
            while(op != 0){        // inicializa antes do while com valor 1
            printf("\n ---------------------* Pilha *----------------------- \n");
            
            mostrar_pilha(); //metodo que imprime a pilha
            
            printf("1 - Adicionar elemento na pilha.\n");
            printf("2 - Excluir elemento da pilha.\n");
            printf("3 - Esvaziar a pilha totalmente.\n");
            printf("0 - Encerrar o programa.\n");
            printf("S. sair \n");
            scanf ("%d", &op); //acrescentar              
            switch (op)
                {

                  case 1 :
                    printf("Digite o elemento a ser empilhado: \n");     
                    empilhando(processo); //metodo que empilha;

                  break;

                  case 2 :

                    desempilhando(); //metodo que desempilha

                  break;

                  case 3 :

                    esvaziar_pilha(); //metodo que esvazia

                  break;

            }
        }
        printf("\nInsira o nome do processo:\n");
        scanf("%s",&processo.nome);
        fflush(stdin);
        
        empilhando(processo);
        
        printf("\n dados da pilha \n");
        printf("PID : %d - nome :%s\n\n",pilha.dados[pilha.ini].PID,pilha.dados[pilha.ini].nome );

    }
     

  4. @Everton Borchardt

     

    Valeu pela ajuda.

    Meu codigo ta quase funcionando, mas ele ta abrindo, direto, preenchendo as linhas e apenas me dando a opção de selecionar qualquer tecla para fechar.

    Não consigo vizualizar onde esta o erro.

    Poderia me dar um toque?

    #include <stdio.h>
    #include <stdlib.h>
    #include <locale.h>
    #include <string.h>
    #include <iostream>
    #include <iomanip>

    // DEFININDO O TAMANHO
    #define tamanho 5

    //DECLARANDO A ESTRUTURA
    typedef struct tipo_proc {
        char nome[10];
         int PID;     
    } tipo_proc;


    typedef struct tipo_pilha {
        tipo_proc dados [tamanho];
        int topo;
        int ini; 
    } tipo_pilha; 

    // VARIÁVEIS GLOBAIS
    tipo_pilha pilha;
    int op;

    //FUNÇÃO DE RETORNO PARA MOSTRAR A PILHA
    void mostrar_pilha()
    {
        int i;
        printf("\nSua pilha: \n\n");
        for (i = 0; i < tamanho; i++) {
             printf("%d \n", pilha.dados);
        }
    }

    //FUNÇÃO PARA EMPILHAR OS ELEMENTOS
    void empilhando(tipo_proc elemento)
    {        
        if (pilha.topo == tamanho) {
             printf("A pilha está cheia, impossivel empilhar!");
             system("pause");
        }

        else {         
             pilha.dados[pilha.topo] = elemento;         
             pilha.topo++;                     

                 }
    }

    //FUNÇÃO PARA DESEMPILHAR OS ELEMENTOS
    tipo_proc desempilhando()
    {
            tipo_proc elemento;
        if (pilha.ini == pilha.topo) {
             printf("A pilha está vazia, impossivel desempilhar!\n");
             system("pause");
        }
        else {
             elemento = pilha.dados[pilha.topo];
             for(int i=0; i<tamanho; i++)
             pilha.dados[pilha.topo]=elemento;
             pilha.topo--;
             return elemento;         
        }
    }

    // FUNÇÃO PARA ESVAZIAR A PILHA

    void esvaziar_pilha()
    {

        int i;

        if (pilha.topo == pilha.ini) {
             printf("A pilha esta vazia, impossivel esvaziar!\n\n");
             system("pause");
        }

        else {

             for (i = 0; i < tamanho; i++)
            {
                 pilha.dados[pilha.topo];
                 pilha.topo--;
            }
        }
    }

    int main()
    {
        setlocale(LC_ALL, "Portuguese");
        pilha.topo = 0;
        pilha.ini = 0;
        tipo_proc processo;
        processo.PID = 0;
        mostrar_pilha();
        while(op != 0){ // inicializa antes do while com valor 1
            printf("\n ---------------------* Pilha *----------------------- \n");
            
            mostrar_pilha(); //metodo que imprime a pilha
            
            printf("1 - Adicionar elemento na pilha.\n");
            printf("2 - Excluir elemento da pilha.\n");
            printf("3 - Esvaziar a pilha totalmente.\n");
            printf("0 - Encerrar o programa.\n");
            printf("S. sair \n");
                    
            switch (op)
            {

                  case 1 :
                    printf("Digite o elemento a ser empilhado: \n");     
                    empilhando(processo); //metodo que empilha;

                  break;

                  case 2 :

                    desempilhando(); //metodo que desempilha

                  break;

                  case 3 :

                    esvaziar_pilha(); //metodo que esvazia

                  break;

            }
        }
        /*printf("\nInsira o nome do processo:\n");
        scanf("%s",&processo.nome);
        fflush(stdin);
        */
        empilhando(processo);
        
        printf("\n dados da pilha \n");
        printf("PID : %d - nome :%s\n\n",pilha.dados[pilha.ini].PID,pilha.dados[pilha.ini].nome );

    }
     

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!