Você está na página 1de 3

Fundao CECIERJ - Vice Presidncia de Educao Superior a Distncia

Curso de Tecnologia em Sistemas de Computao Disciplina Fundamentos de Programao AD2 1 semestre de 2013.
IMPORTANTE: - As respostas (programas) devero ser entregues em papel E TAMBM em disquete, CD ou DVD para serem testados. - A AD um mecanismo de avaliao individual. As solues podem ser buscadas por grupos de alunos, mas a redao final de cada resposta tem que ser individual. - Ateno: ADs enviadas pelo correio devem ser postadas cinco dias antes da data final de entrega estabelecida no calendrio de entrega de ADs.

1a Questo (2,0 pontos) (Arquivo Texto) Desenvolva um programa em Pascal que processe dois arquivos texto da seguinte forma. Inicialmente, o programa deve pedir ao usurio os nomes dos arquivos, garantindo nomes distintos. Em seguida deve mostrar na tela o contedo dos dois arquivos. Supondo que o primeiro arquivo possua, no mximo, 500 palavras distintas, o programa deve ento remover todas as palavras do segundo arquivo que ocorrem no primeiro e mostrar novamente os dois arquivos na tela.

2a Questo (2,0 pontos) (Arquivo Tipado) Considere a seguinte declarao. Type ArqDeInteiros = File of integer; Desenvolva um programa em Pascal que leia do usurio: o nome de um arquivo (N), a quantidade de nmeros (X) e a faixa (valor mnimo e valor mximo) de variao dos nmeros a serem gerados e gravados no arquivo. O programa dever: (1) Criar um arquivo do tipo ArqDeInteiros de nome N, contendo X inteiros, dentro da faixa informada, gerados aleatoriamente; (2) Mostrar o arquivo gerado na tela; (3) Remover todos os nmeros primos do arquivo produzido; e (4) Mostrar o arquivo aps a remoo. Definio: Um nmero primo se e somente se for maior que 1 e divisvel apenas por 1 e por ele mesmo.

3a Questo (2,0 pontos) (Arquivo Tipado) Considere as seguintes declaraes. Const TotalDeLinhas = 3; TotalDeColunas = 5; Type Linhas = 1.. TotalDeLinhas; Colunas = 1.. TotalDeColunas; Matriz = Array[Linhas, Colunas] of integer; ArqMatrizes = File of Matriz; Desenvolva um programa em Pascal que pea o nome do arquivo a ser gerado, a faixa de valores das clulas das matrizes a serem geradas aleatoriamente e a quantidade de matrizes a serem geradas, e, alm disso: (1) Mostre o arquivo gerado; (2) Identifique e mostre as duas matrizes com maior nmero de colises (caso haja empate, escreva duas delas). (3) Elimine do arquivo as duas matrizes identificadas. (4) Mostre novamente o contedo do arquivo (aps as remoes). Definio: Uma coliso acontece entre duas clulas de duas matrizes, A e B, de mesma dimenso, se seus valores na linha i e coluna j forem iguais, isto : A[i,j] = B[i,j]. 4a Questo (2,0 pontos) (Conjuntos) Desenvolva uma funo em Pascal que receba como entrada dois conjuntos de inteiros entre 1 e 50 e retorne uma classificao para esse par de conjuntos, considerando a semelhana entre eles. A funo dever retornar: 1 caso os conjuntos sejam iguais, 2 caso um seja subconjunto prprio do outro e o nmero de elementos da diferena entre o maior e o menor conjuntos seja menor ou igual ao nmero de elementos do menor conjunto, 3 caso um seja subconjunto prprio do outro e o nmero de elementos da diferena entre o maior e o menor conjuntos seja maior do que o nmero de elementos do menor conjunto, 4 caso um no seja subconjunto do outro e a interseo entre eles no seja vazia, e 5 caso sejam conjuntos disjuntos.

5a Questo (2,0 pontos) (Ponteiro e Ordenao) Desenvolva um procedimento em Pascal para inserir, em uma lista encadeada no vazia e ordenada crescentemente pelo valor da chave, um novo elemento, contendo a chave c passada como parmetro. Esse elemento dever ser inserido mantendo-se a lista ordenada. Utilize as seguintes declaraes. type T_info = integer; T_pont = ^T_elemento; T_elemento = record chave : T_info; prox : T_pont end; procedure Insere_Elem (var P_Lista{e/s}: T_pont; c{e}: T_info); begin {P_Lista: contm o ponteiro para o primeiro elemento da lista ordenada;} {c: contm o valor da chave do elemento a ser inserido.} end; Utilizando o procedimento acima, desenvolva outro procedimento que ordene uma lista encadeada no vazia (pelo valor da chave) da seguinte forma. Para cada elemento E da lista de entrada Ent, remova E de Ent e insira um novo elemento com a chave de E, de forma ordenada, na nova lista de sada Sai (ativando o procedimento Insere_Elem). Utilize as seguintes declaraes. procedure Gera_Lista_Ordenada (var Ent_Lista{e/s}, Sai_Lista{e/s}: T_pont); begin {Ent_Lista: contm o ponteiro para o primeiro elemento da lista de entrada;} {Sai_Lista: contm o ponteiro para o primeiro elemento da lista ordenada de sada;} end;