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 ().