Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Gabriel Lannes

C Exércicio de Pilha e TAD

Recommended Posts

Pessoal to fazendo um curso de Estrutura de Dados e foi passado o seguinte exercício:

 

                                                                                                                                   Objetivo

O seu objetivo é construir uma simples IDE para LISP. Nesta IDE, dado um código e uma posição de um caracter, você deve dizer se o código está sintaticamente correto e qual o nível que o caracter na posição dada está. Um código de LISP está sintaticamente correto se para cada parêntese aberto, há um fechado equivalente. Outras características sintáticas da linguagem podem ser ignoradas neste trabalho.

A posição dos caracteres começam a contar a partir de 1 e o primeiro nível é dado dentro do primeiro parêntese aberto. Um código em LISP pode possuir qualquer caracter do teclado, sem acentos, incluindo espaços e quebras de linha. O código abaixo representa o fatorial em LISP.

(defun factorial (n)(if (<= n 1) 1 (* n (factorial (- n 1)))))

Para o código acima, que está correto, o caracter na posição 3 é a letra 'e' e ela está no nível 1, já na posição 29 temos o caracter 'n' no nível 3.

Entrada e Saída

A entrada consiste do valor de n (número de caracteres no programa), seguido do valor de i (posição do elemento específico que queremos saber o nível). Seguido desses dados, na linha seguinte, temos o programa em si que pode conter qualquer caracter existente na Tabela ASCII (lembre-se de que a quebra de linhas, ou \n, é um caracter. Um parênteses nunca é dado como elemento e se o programa estiver incorreto não é necessário dar o nível do elemento.

Você deve utilizar o arquivo pilha.h ( a biblioteca pilha.h está no final do post ) para criação de um Tipo Abstrato de Dados para uma pilha que obrigatoriamente deve ser utilizada na resolução do problema. Mudanças no TAD ou a não utilização de uma pilha na resolução do problema acarretarão em nota ZERO.

Exemplos

Nos exemplos abaixo a cor azul representa a entrada que deve ser lida pelo seu programa, e a cor vermelha, a saída que deve ser gerada pelo seu programa na saída padrão.

Exemplo 1:

62 29

(defun factorial (n)(if (<= n 1) 1 (* n (factorial (- n 1)))))

O programa está correto e o elemento n esta no nivel 3.

Exemplo 2:

62 29

(defun factorial (n](if (<= n 1) 1 (* n (factorial (- n 1)))))

O programa está incorreto.

Exemplo 3:

106 10

;;; This function simply returns the string Hello World that is in quotes.

(DEFUN HELLO ()

"HELLO WORLD"

)

O programa está correto e o elemento f esta no nivel 0.

 

 

Eu estou com muita duvida de como faze-lo então se alguém puder me ajudar de alguma forma serie muito grato, principalmente com a questão da pilha.h. Qualquer ajuda é bem vinda!

 

 

biblioteca pilha.h:

 

#ifndef PILHA_H_
#define PILHA_H_

#include <stdio.h>

#define MAX 100

typedef struct pilha {
       char elementos[MAX];
       int topo;
} Pilha;

Pilha create();
char pop(Pilha *p);
void push(Pilha *p, char c);
int isEmpty(Pilha p);
int isFull(Pilha p);
int size(Pilha p);

#endif
 

 

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Lannes , não conheço muito bem a linguagem LISP, porém a pergunta que eu lhe faço é:

Você recebeu o arquivo de cabeçalho do seu programa de pilha ( .h), você não sabe implementar esses métodos?

Você teve aulas sobre Pilha e LIFO? Sabe a "teoria" sobre pilhas?

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário


Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×