imasternex
(usa Ubuntu)
Enviado em 28/03/2010 - 10:21h
ae galera,
estou com dificuldades para finalizar um codigo e gostaria de contar com vcs para finaliza-lo.
abaixo segue o codigo:
//-------------------- biblioteca.c -------------------
#include "biblioteca.h"
char my_toupper(char op) { //funçao que muda a fonte a >> A
if ((op >= 'a') && (op <= 'z')) {
op = op - 32;
}
return (op);
}
void inicializa_memoria (void){
int i;
for (i=N-1; i>0; i--){
mmr[i].prox=i-1;
}
livre = N-1;
topo=-1;
}
int my_alloc (void){ /* aloca espaço na pilha */
int posicao;
posicao = livre;
if (livre!=-1){
livre=mmr[livre].prox;
}
return (posicao);
}
int my_free (int posicao){ /* limpa posição */
mmr[posicao].prox = livre;
livre = posicao;
}
int pilha_insere (int v) { /* insere pilha */
int x;
x = my_alloc();
printf ("O valor do malloc: %d\n", my_alloc);
printf ("O valor do x: %d\n", x);
if (x == -1) {
return (0);
}
else {
mmr[x].info = v;
printf ("O valor do mmr[x] info: %d\n", mmr[x].info);
mmr[x].prox = topo;
printf ("O valor do mmr[x] prox: %d\n", mmr[x].prox);
topo = x;
printf ("O valor do topo: %d\n", topo);
return (1);
}
}
int pilha_remove (void) { /* remove pilha */
int r;
if (!pilha_vazia()){
r = topo;
topo = mmr[topo].prox;
my_free(r);
return (1);
}
return (0);
}
int pilha_vazia (void) { /* pilha vazia */
return (topo == -1);
}
int pilha_cheia (void) { /* pilha cheia */
return (topo == N-1);
}
int pilha_top (void) { /* topo da pilha */
if (!pilha_vazia ()){
return (topo);
}
else {
return (0);
}
}
// --------------------- biblioteca.h --------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
int topo;
int vet[N];
int v;
char op;
int livre;
typedef struct memoria { /* alocação */
int info;
int prox;
}elemento;
elemento mmr[N];
char my_toupper (char op);
void inicializa_memoria (void);
int my_alloc (void);
int my_free (int posicao);
int pilha_insere (int v);
int pilha_remove (void);
int pilha_vazia (void);
int pilha_cheia(void);
int pilha_top (void);
// --------------------- main --------------------
#include "biblioteca.h"
int main(int argc, char *argv[]) {
inicializa_memoria();
do {
printf ("\n-- Menu --\n");
printf ("\nA - Aloca Pilha");
printf ("\nD - Desaloca Pilha");
printf ("\nI - Insere");
printf ("\nR - Remover");
printf ("\nT - Topo");
printf ("\nS - Sair");
printf ("\n\nInforme a operacao desejada: ");
fflush (stdin);
scanf ("%c", &op);
op = my_toupper (op);
system ("cls");
switch(op){
case 'I':
printf ("Informe o valor que deseja inserir: ");
fflush (stdin);
scanf ("%d",&v);
printf ("O valor a ser inserido : %d \n\n", v);
system ("pause");
system ("cls");
if (pilha_insere (my_alloc())){
printf ("O valor - %d - foi inserido\n\n", v);
}
else {
printf ("O valor - %d - NAO foi Inserido - A pilha esta cheia\n\n", v);
}
break;
case 'R':
printf (" -- Removendo dados da pilha --\n\n");
if (pilha_remove ()) {
printf ("O valor - %d - foi removido\n\n", vet[topo+1]);
}
else {
printf ("NAO foi removido - A Pilha esta vazia\n\n");
}
break;
system ("pause");
system ("cls");
case 'T':
printf ("-- Mostra valor do topo da pilha --\n\n");
if (!pilha_vazia()) {
printf ("Elemento do topo %d\n\n", vet[topo]);
}
else {
printf ("NAO existe elemento no topo - Pilha vazia\n\n");
}
break;
case 'A':
printf ("Endereco de memoria: %d \n\n", my_alloc());
break;
case 'D':
default:
if (op == 'S') {
printf ("Saindo...\n");
}
else {
printf ("Operacao invalida\n");
}
}//END switch(op)
system ("pause");
system ("cls");
}while (op != 'S');
system("pause");
return 0;
}