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.
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.
Pergunta
Anderson cagnin
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
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.