Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
UNIVERSIDADE FEDERAL DE JUIZ DE FORA
INSTITUTO DE CIÊNCIAS EXATAS
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
1º TVC de Laboratório de Programação II – 14/05/2012
ALUNO (A) __________________________________________________________________________ Turma:______
ATENÇÃO: A prova deve ser feita na linguagem C.
1) Dado o programa abaixo, indique o que será impresso: (30)
int main()
{
int a = 1, b = 2, c = 3, *v, *px, *py, *pz;
px = &a;
py = &b;
a++;
*py = c;
v = (int*) malloc(3 * sizeof(int));
v[2] = 10;
pz = v;
*pz = b;
*(pz+1) = *px;
pz = py;
printf(">> Teste (1) << \n");
printf("A: %d, B: %d, C: %d\n", a, b, c);
printf("V: %d, %d, %d\n", v[0],v[1],v[2]);
a = *pz * v[2];
v[0] = *px + *py;
v[1] = *py;
*(v+2) = *pz;
(*py)--;
(*(v+1)) = c % (*px);
printf(">> Teste (2) << \n");
printf("A: %d, B: %d, C: %d\n", a, b, c);
printf("V: %d, %d, %d\n",v[0],v[1],v[2]);
free(v);
return 0;
}
2) Considerando as definições abaixo de uma matriz M (m x n) de elementos reais onde somente os elementos acima da
diagonal principal (sem incluir a diagonal) são diferentes de zero, desenvolver as funções cria_matriz (cria uma
matriz dadas as quantidades de linhas e colunas) e consulta (retorna o valor contido na posição relativa aos índices i e
j da matriz).
M =
0.0 m0,1 m0,2 ... m0,n-1
0.0 0.0 m1,2 ... m1,n-1
0.0 0.0 0.0 ... m2,n-1
... ... ... ... ...
0.0 0.0 0.0 ... 0.0
struct matrizETS
{
int m, n;
float *v;
};
typedef struct matrizETS MatrizETS; //TAD Matriz ETS
a) MatrizETS* cria_matriz(int m, int n); (15)
b) float consulta(MatrizETS *mat, int i, int j); (15)
3) Abaixo encontram-se as definições dos TADs ListaEnc e ListaCont, que implementa uma lista simplesmente
encadeada e uma lista contígua, respectivamente. Desenvolver as funções conta (retorna o total de elementos na lista),
buscaUltimo (retorna o índice da última ocorrência de val) e converte (cria uma lista contígua contendo todos os
elementos da lista encadeada).
struct listaEnc
{
int info;
struct lista *prox;
};
struct listaCont
{
int n, m;
int *x;
};
typedef struct listaEnc ListaEnc; //TAD Lista Encadeada
typedef struct listaCont ListaCont; //TAD Lista Contígua
a) int conta(ListaEnc* l); (10)
b) int buscaUltimo(ListaEnc *l, int val); (15)
c) ListaCont* converte(ListaEnc *l); (15)
a b c v[0] v[1] v[2]
Teste (1)
Teste (2)
m