-
Posts
6 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por argolo.david
-
-
Alguem me da uma dica ai no encerrar programa.
-
@Flávio Pedroza irmão, sua dica foi top. Agora so falta a função sair.
Coloquei assim:
// FUNÇÃO PARA SAIR DA PILHAvoid pilha_sair()
{
int i;
if pilha.dados[pilha.topo-1] = 0;
pilha.topo--;
}
(...)switch (op)
(...)
case 4 :
pilha_sair (); //metodo sair -
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.
#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 );}
-
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 );}
-
Ola senhores, boa madrugada.
Estou tentando finalizar, mas ta osso essa PILHA.
To tentando linkar o meu menu, mas nao consigo de jeito nenhum.
Alguem poderia me ajudar com m exemplo?
Obrigado.
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
pilha estatica tan complicado
em C/C#/C++
Postado
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 );
}
}