amigos, conseguio gerar o PID, mas não esta empilhado corretamente, vejam. temos pouco tempo pra enviar
#include <iostream>
#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
// DEFININDO O TAMANHO
#define tamanho 5
//DECLARANDO A ESTRUTURA
typedef struct t_proc {
char nome[10];
int PID;
} t_proc;
typedef struct t_pilha {
t_proc dados [tamanho];
int topo;
int ini;
} t_pilha;
t_pilha pilha;
t_proc backup;
//FUNÇÃO PARA EMPILHAR OS ELEMENTOS
void empilha(t_proc elemento){
if (pilha.topo == tamanho) {
printf("A pilha está cheia!");
system("pause");
}
else {
pilha.dados[pilha.topo] = elemento;
pilha.topo++;
}
}
//FUNÇÃO PARA DESEMPILHAR OS ELEMENTOS
t_proc desempilha()
{
int i;
t_proc elemento;
if (pilha.ini == pilha.topo) {
printf("A pilha está vazia!\n");
system("pause");
}
else {
elemento = pilha.dados[pilha.topo];
for(i=0; i<tamanho; i++);
pilha.topo--;
elemento = pilha.dados[pilha.topo];
return elemento;
}
}
//FUNÇÃO DE RETORNO PARA MOSTRAR A PILHA
void mostrar_pilha(){
char i;
t_proc processos;
for (i = 0; i < tamanho; i++) {
printf("\nProcessos Empilhados: \n\n");
printf("%d\n", pilha.dados);
}
//printf("\n\n");
}
void esvaziar_pilha()
{
int i;
if (pilha.topo == pilha.ini) {
printf("A pilha está vazia!\n\n");
system("pause");
}
else {
for (i = 0; i < tamanho; i++)
{
pilha.dados[pilha.topo];
pilha.topo--;
}
}
}
int main(){
int cm; //conta menu
do{
setlocale(LC_ALL, "Portuguese");
pilha.topo = 0;
pilha.ini = 0;
printf(" [1] Inserir um novo elemento.\n");
printf(" [2] Remover elemento do Topo.\n");
printf(" [3] Esvaziar a pilha.\n");
printf(" [4] Mostrar Pilha\n"); ;
printf(" [0] Encerrar.\n");
fflush(stdin);
scanf ("%d",&cm);
switch (cm){
case 1 :
t_proc processo;
processo.PID ++;
printf("\nInsira o nome do processo:\n");
scanf("%s",&processo.nome);
fflush(stdin);
empilha(processo);
printf("\n -Dados da Pilha.\n");
printf("PID : %d - nome :%s\n\n",pilha.dados[pilha.ini].PID,pilha.dados[pilha.ini].nome);
scanf("PID: %d - Nome: %s", processo.PID, processo.nome);
break;
case 2 :
desempilha;
processo = desempilha();
printf("\nConteúdo que foi desempilhado:\n");
printf("PID: %d - Nome: %s\n", processo.PID, processo.nome);
break;
case 3:
esvaziar_pilha();
break;
case 4:
mostrar_pilha();
break;
}
}while (cm >0);
return 0;
}
adicionado 0 minutos depois
so que gera o PID a partir do 1 e não do 0.
isso que to me batendo aqui.
adicionado 1 minuto depois
Wagner, ta feio o negocio.
adicionado 4 minutos depois
Quem achar a solução, nos ajude. Please.