next up previous
Next: About this document ...

MAC 122 - Princípios de Desenvolvimento de Algoritmos

BCC - Primeira Prova - 14 de setembro de 2000

     
NOME DO ALUNO :    
     
NUSP :    
     
ASSINATURA:    
     




INSTRUÇÕES

1.
Preencha o cabeçalho acima.
2.
Você preencheu mesmo o cabeçalho acima? Caso o tenha preenchido, verifique se sua prova está completa. Esta prova deve ter 5 folhas (contando esta capa), com o enunciado de 4 questões.
3.
Você pode fazer essa prova a lápis (e apagar com a borracha ;-)).
4.
A prova deve ser resolvida sem consulta a apontamentos, cadernos, livros ou colegas. Você pode perguntar o que desejar ao professor (he he he).




DURAÇÃO DA PROVA: 1 hora e 40 minutos








  Nota
Questão 1  
Questão 2  
Questão 3a  
Questão 3b  
Questão 4  
TOTAL  




B O A P R O V A

1.
(valor 3.0 pontos)

Simule a execução do programa abaixo, destacando a saída e os estados das variáveis nos pontos (*), (**) e (***). Utilize como entrada os três últimos dígitos de seu número USP. Assim, se seu NUSP for 3267962, a entrada será 962.

#include <stdio.h>
#include <malloc.h> 

typedef struct no * apont;
struct no 
{
  int info;
  apont prox;
};

void InsereInicio (apont * inicio, int x)
{
  apont novo;
  novo = (apont) malloc( sizeof(struct no) );
  novo->info = x;
  novo->prox = *inicio;
  *inicio = novo;
}
void RemoveInicio (apont * inicio)
{
  apont p = *inicio;
  *inicio = (*inicio)->prox;
  free (p);
}
void ImprimeLista (apont inicio)
{
  apont p;
  printf("Lista: ");
  for (p = inicio; p!= NULL; p = p->prox)
    printf("%d ", p->info);
printf("\n");
}
int main()
{
  apont lista = NULL;
  int numero, d;
  
  scanf("%d", &numero);
printf("Entrada = %d\n", numero);
d = numero % 10;
numero = numero / 10;
  if (d > 5) 
    InsereInicio(&lista, d);
  ImprimeLista(lista);       (*) 
  d = numero % 10;
numero = numero / 10;
  InsereInicio (&lista, d);
  ImprimeLista(lista);       (**)
  RemoveInicio(&lista);
  ImprimeLista(lista);       (***)
  return 0;
}

2.
(valor 3.0 pontos)
Considere uma lista ligada contendo números inteiros e escreva uma função RemoveImpar que recebe um ponteiro para o início da lista e remove os elementos com conteúdo ímpar da lista.

3.
(valor 1.5+1.5 pontos)
a. Considere a frase abaixo, em que as letras correspondem a operações de ``empilhar'', e '*' significa que uma operação ``desempilhar'' deve ser executada.

Exemplo: Dada a frase AB*C*D** a seqüência de letras que serão desempilhadas será BCDA.

Dada a seqüência EST*EÉ***FA*C**IL*** qual é a seqüência de letras desempilhada?

b. Usando a convenção acima, insira asteriscos na palavra BOLA para obter como saída:

Caso não seja possível obter alguma seqüência, justifique.

4.
(valor 1.0 ponto)

Aproveite este última folha para fazer uma crítica à disciplina: aulas, trabalhos, listas, etc. O que você acha que deve ser mudado nos próximos meses?

Sua nota nesta questão (a menos que você a deixe em branco) será completa, independentemente do que você escrever.




next up previous
Next: About this document ...
Carlos Eduardo Ferreira
2000-09-19