PRÁTICA DE APRENDIZAGEM
ORIENTAÇÃO GERAL
Cada QUESTÃO proposta deverá ter em sua solução, quando pertinente e mesmo que não citado no texto do
problema:
a) o algoritmo da solução;
b) a análise de complexidade de tempo (pior caso);
c) a análise de complexidade de espaço (pior caso);
d) o código fonte do programa escrito na linguagem de programação C *(ou na linguagem de sua preferência);
e) utilize a ferramenta Dev-C++ (http://www.bloodshed.net/) *(ou alguma de sua preferência)
QUESTÃO 1
Digite o código a seguir. Compile e execute. O que esse programa faz? Qual é a entrada? Qual é o resultado (saída)?
Encontrou algum erro? Se encontrou, conserte-o! Qual a complexidade assintótica de pior caso (tempo e espaço)?
Justifique suas respostas.
int main(void)
{
FILE *pont_arq; // cria variável ponteiro para o arquivo
char palavra[20],c; // variável do tipo char/string
char texto_str[20];
fclose(pont_arq);
1/3
Universidade Federal do ABC (UFABC)
Centro de Matemática, Computação e Cognição (CMCC)
puts("\n");
do
{
//faz a leitura do caractere no arquivo apontado por pont_arq
c = getc(pont_arq);
}while (c != EOF);
fclose(pont_arq);
puts("\n");
//fechando o arquivo
fclose(pont_arq);
getch();
return(0);
}
QUESTÃO 2
Digite o código a seguir. Compile e execute. O que esse programa faz? Qual é a entrada? Qual é o resultado (saída)?
Encontrou algum erro? Se encontrou, conserte-o! Qual a complexidade assintótica de pior caso (tempo e espaço)? Qual
a diferença deste código para o código da questão anterior? Justifique suas respostas.
#include <stdio.h>
int main(void)
{
register int i;
FILE *pa;
float saldo[100];
2/3
Universidade Federal do ABC (UFABC)
Centro de Matemática, Computação e Cognição (CMCC)
/* zera a matriz */
for(i=0; i<100; i++) saldo[i] = 0.0;
fclose(pa);
return 0;
}.
QUESTÃO 3
Escreva um algoritmo para manter uma lista telefônica de uma dada cidade brasileira em um arquivo. Considere que o
número de assinantes seja 100 mil habitantes, depois que seja 1 milhão de habitantes, finalmente que seja 10 milhões
de habitantes. Para realizar consultas, inserções e remoções, você deve poder informar nomes e/ou números. Que tipo
de arquivo você indicaria (sequencial, sequencial indexado, indexado, direto)? Qual a complexidade assintótica de pior
caso (tempo e espaço)? Como você estimaria o número de acessos ao arquivo no caso de operações de consulta,
inserção e remoção de assinantes? Essa estimativa variaria em função do número de assinantes? Seria um mesmo tipo
de algoritmo independentemente do número de assinantes? Justifique suas respostas.
FIM
3/3