Exercício Programa - EP1

MAC2301 - IME - USP

Data de Entrega: 9 de Abril de 2002

Professor Responsável: Alfredo Goldman

Departamento de Ciência da Computação - Instituto de Matemática e Estatística - IME - Universidade de São Paulo - USP

e-mail: gold@ime.usp.br -   http://www.ime.usp.br/~gold

Instruções Gerais

1- Os Eps podem ser feitos em grupos de dois. Não serão toleradas cópias de Eps entre grupos.

2- Programas devem ser entregues funcionando :). Dica: projete um bom conjunto de dados teste. Teste o algoritmo e corrija os erros (debug!).

3- Coloque seu programa (.c) em um disquete com uma etiqueta contendo os dados dos integrantes da equipe: nome, número USP, disciplina, a data e o número do EP. Inclua essas informações na forma de comentários no início do programa! Entregue em um saquinho plástico transparente o disquete e uma listagem do programa. Inclua também um pequeno relatório explicando o desenvolvimento e as principais partes do programa. Indique o compilador que você usou.



Exercício-Programa 1

Neste EP, você terá que criar uma programa que irá verificar possíveis erros em páginas html. Mais especificamente, vocês terão que criar um programa C que tome como entrada um arquivo HTML e verifique se as seguintes etiquetas estão balanceadas corretamente:

<HEAD>, <TITLE>, <BODY>, <pre>, <blockquote>, <ADDRESS>, <CITE>, <CODE>, <DFN>, <EM>, <KBD>, <SAMP>, <STRONG>, <VAR>, <B>, <I>, <TT>, <U>, <STRIKE>, <S>, <BIG>, <SMALL>, <SUB>, <SUP>, <FONT SIZE=tamanho_da_letra>, <BLINK>, <MARQUEE BEHAVIOR=efeito>, <A HREF = "arq_dest">, <dl>, <ul>, <ol>....

Uma referência mais completa pode ser encontrada em nesta página.

Os atributos das etiquetas devem ser ignorados pelo seu programa. Todas as outras partes, texto e comandos desconhecidos do arquivo devem ser ignorados. Etiquetas que não são usadas em pares  (por ex. <IMG SRC = "newred.gif">) devem ser ignoradas. Não se esqueça que html não diferencia entre maiúsculas e minúsculas, e seu programa também deve funcionar analogamente. Seu programa deve dizer, na saída, que as etiquetas estão corretamente balanceadas (uma única mensagem) ou, caso contrário, que não estão. Nesse último caso, seu programa deve informar ao usuário qual etiqueta e qual linha do arquivo que está desbalanceada.

O seu programa deve ler os caracteres, linha a linha usando gets(), para ler os dados a partir da entrada padrão. Caso você deseje testar o programa com arquivos html "reais" faça: prog < arq.html.

O algoritmo básico desse programa é semelhante ao do problema de verificação de balanceamento de expressões matemáticas contendo {}, [] e ().