Ir para conteúdo
Fórum Script Brasil
  • 0

Capicua com menu


Anderson cagnin

Pergunta

Gostaria de saber se alguém pode me ajudar com esse codigo, preciso fazer ele com funções PUSH e POP relacionados a pilha, é um programa q retorna se a palvra é capicua ou não, mas ainda sou leigo em C, gostaria q vocês me ajuda-sem, mas n pode ser feito com biblioteca especifica.

#include <stdio.h>

#include <ctype.h>

#include <stdlib.h>

#include <string.h>

#define MAX 81

//******************************************************************//

// definição da estrutura da pilha.

typedef struct {

char item[MAX];

int topo;

int pilha;

}

tPilha;

//******************************************************************//

void PUSH(tPilha *pilha, char );

char POP(tPilha *);

int cheia(tPilha *);

int vazia(tPilha *);

int capicua (char *, tPilha *);

//******************************************************************//

int main (){

int opc; //vai digitar a escolha do que deseja fazer

while (opc)

{

system ("cls"); // limpa tela

puts ("SELECIONE UMA DAS OPCOES ABAIXO:\n");

puts ("[ 1 ] INSERIR PALAVRA OU FRASE.");

puts ("[ 2 ] REMOVER A PALVRA OU FRASE.");

puts ("[ 0 ] SAIR !!!!\n");

scanf("%d",&opc); // le e grava a opcao digitada/*

getchar(); // segura a tela

switch (opc){ // faz a escolha da opcao

case 1: PUSH();{ // chamar a funcao de insercao(push)

system("pause");}

break;

case 2: POP(pilha P);

system("pause");

break;

case 0:

exit(0);

break;

}

}

while (palavra != '') {

PUSH(pilha, palavra);

i++;

}

if (capicua(palavra, pilha)){

puts("Capicua.");

system("pause");

}

else{

puts("não e Capicua");

system("pause");

}

}

//******************************************************************//

//******************************************************************//

int capicua (char *palavra, tPilha *pilha) {

int capicua = 1, i; // damos o valor de 1 para capicua para podermos usar dentro do For.

for (i=0; i<strlen(palavra); i++) // strlen = retorna o tamanho de uma string

if (palavra != POP(pilha)) capicua = 0; // enquanto for igual continua fazendo o codigo, a partir do momento que é diferente retorna 0 encerrando a execucao do for.

return capicua; //retorno de capicua como 1 para poder continuar a execucao do for.

}

//******************************************************************//

int cheia(tPilha *pilha){

if (( pilha = (tPilha *) malloc(sizeof(tPilha)) ) == NULL ){ // se o topo da pilha for igual a null então podemos concluir que a pilha esta cheia

puts("não há espaço."); // impressao q não há espaco

system("pause");

return(0); //retorno zero para encerrar a execucao

}else{

return(1); //retorna um para permitir a inclusao

}

//******************************************************************//

int vazia(tPilha *);

{ //funcao para verificar se a pilha esta vazia

if (pilha->topo == -1){ // se o indice do topo for = -1, quer dizer q a pilha esta vazia

puts("Pilha vazia."); //imprime a mensagem que a pilha esta vazia

system("pause");

return(0); //retorno zero para encerrar a execucao

}else{

return(1); //retorna um para permitir a exclusao

}

}

//******************************************************************//

void PUSH(tPilha *pilha, char );{

// tPilha *pilha; // topodapilha = declaracao do ponteiro da pilha

char palavra[80];

int i=0; // indice

pilha->topo = -1; //

puts("Digite o a palavra?");

gets(palavra);

cheia(pilha); //funcao que verifica se a pilha esta cheia

if (pilha->topo < MAX-1) { // caso o retorno da funcao seja um, quer dizer q pode inserir.

pilha->topo++;

pilha->item[pilha->topo]=i;

}

else puts("Pilha cheia."); //se o retorno da funcao cheia for zero, então imprimira essa mensagem!!

}

//******************************************************************//

char POP(tPilha *);

{

vazia(pilha); // chamada da funcao que verifica se a pilha esta vazia.

if (pilha->item[pilha->topo--]){

}else puts("Pilha vazia"); // se o retorno da funcao for zero, então imprimira essa mensagem!!

}

se alguém poder me ajudar.....

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...