• Nenhum resultado encontrado

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados"

Copied!
13
0
0

Texto

(1)

Instituto Superior T´

ecnico

Introdu¸

ao aos Algoritmos e Estruturas de Dados

Ano Lectivo de 2004/2005

2

o

Semestre

1

o

Teste A - 30 de Abril de 2005

Dura¸c˜

ao: 2h

- O teste ´e sem consulta.

- Para cada quest˜ao com escolha m´ultipla deve escolher apenas uma das hip´oteses apresentadas.

- No final deve preencher a grelha das solu¸c˜oes (1a p´agina) com o n´umero da res-posta escolhida para cada quest˜ao com escolha m´ultipla.

- Para as quest˜oes com escolha m´ultipla, s´o ser˜ao avaliadas as respostas leg´ıveis apresentadas na grelha.

- Nas quest˜oes de escolha m´ultipla cada resposta errada ´e cotada negativamente com um valor −n−11 onde n ´e o n´umero de op¸c˜oes.

- Certifique-se que a sua identifica¸c˜ao est´a leg´ıvel na primeira folha do enunciado.

Grelha I. a) h i I. b) h i I. c) h i II. a) h i II. b) h i III. a) h i III. b) h i III. c) h i IV. a) h XXX i IV. b) h XXX i V. a) h XXX i V. b) h XXX i

(2)

I. (1.5+1.5+2.0 = 5.0 val.)

a) Considere o seguinte programa em C.

1 #include <stdio.h> 2 3 #define M 15 4 5 int main() { 6 7 int i = 0; 8 real j; 9 10 while (i++ < M) 11 { 12 if (i % 2 != 0) 13 printf("%3d - I ", i); 14 else 15 printf("%3d - P ", i); 16 } 17 printf("\n"); 18 19 for(j = M, j > 0; --j) 20 { 21 if (i % 3 != 0) 22 printf("%3d - NM3 ", j); 23 else 24 printf("%3d - M3 ", j); 25 } 26 printf("\n"); 27 28 return 0; 29 }

Quais das seguintes linhas dar˜ao erro quando este programa for compilado ? a. 7 e 25

b. 12 e 21 c. 3 e 8 d. 8 e 19

(3)

b) Qual das seguintes declara¸c˜oes pode ser usada para declarar uma tabela com 10 posi¸c˜oes de apontadores para n´umeros de v´ırgula flutuante?

a. float arr[*10]; b. float arr[5 + 5]; c. float *arr[10]; d. float *arr[sizeof(float)]; e. float [10] arr; f. double arr[10];

(4)

c) Considere o seguinte programa em C: 1 int main() 2 { 3 int i; 4 int j; 5 int *p; 6 int *q; 7 int v[10]; 8 9 i = 0; 10 p = &i; 11 *j = p; 12 q = v + 1; 13 ++p; 14 j = *q; 15 q = v[&q]; 16 17 return 0; 18 }

Quais das seguintes linhas dar˜ao erro quando este programa for compilado ? a. 10, 11 e 12 b. 11 e 15 c. 8 e 11 d. 8 e 13 e. 15 e 16 f. 10 e 11

(5)

II. (1.5+1.5 = 3.0 val.)

a) Considere o seguinte programa em C: #include <stdio.h>

void ppp(int v[], int t) {

int i;

for (i = 0; i < t; ++i) v[i] = t - i;

}

void sss(int v[], int t) { int i; for (i = 0; i < t; ++i) v[i] = v[t - i - 1]; } int main() { int x[10]; ppp(x,10); sss(x,10); printf("%d %d %d\n", x[0], x[2], x[4]); return 0; }

Quais os valores escritos pelo programa? a. 0 2 4 b. 3 2 1 c. 4 3 2 d. 2 4 6 e. 1 3 5 f. 0 0 0 g. 4 2 0

(6)

b) Considere o seguinte programa em C: #include <stdio.h> int abcd(int *v) { int *p = v; int c = 0; while (*p != 0) { if (*p % 2 != 0) ++c; ++p; } return c; } int main() { int x[] = {10, 21, 34, 56, 87, 0}; int y[] = {5, 28, 23, 12, 14, 18, 22, 0}; printf("%d\n", abcd(x) + abcd(y));

return 0; }

Qual o valor escrito pelo programa? a. 5 b. 12 c. 14 d. 0 e. 10 f. 4 g. 1

(7)

III. (1.5+1.5+1.0 = 4.0 val.)

a) Considere o seguinte programa em C: #include <stdio.h>

int ccc1(char *s, char t) { int c = 0; while (*s != ’\0’) { if (*s == t) ++c; ++s; } return c; }

int ccc2(char *s, char *v) { int c = 0; while (*s != ’\0’) { c += ccc1(v, *s); ++s; } return c; } int main() {

printf("%d\n", ccc2("cebolas", "ceroulas")); return 0;

}

Qual o valor escrito pelo programa? a. 8 b. 7 c. 15 d. 6 e. 10 f. 1 g. 0

(8)

b) Considere o seguinte programa em C: #include <stdio.h>

int c;

void tpu(float f[], int i, int t) { ++c; if (i >= t) return; else { i++; tpu(f,i+1,t); } } int main() { float v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9 ,10}; c = 0; tpu(v,0,10); printf("%d\n", c); return 0; }

Quantas vezes ´e chamada a fun¸c˜ao tpu? a. 4 b. 5 c. 6 d. 10 e. 9 f. 8 g. 7

(9)

c) Indique qual o valor escrito pelo seguinte programa em C: #include <stdio.h> #include <stdlib.h> struct tt { int x; struct tt *p; }; typedef struct tt *ll; typedef struct tt ss; int main() { int i; ll p = (ll )malloc(sizeof(ss)); ll t = (ll )malloc(sizeof(ss)); ll q = (ll )malloc(sizeof(ss)); ll n; p->p = t; t->p = q; q->p = p; n = p; for (i = 0; i < 25; ++i) { n->x = i; n = n->p; } printf("%d\n", t->x); free(p); free(t); free(q); return 0; } a. 9 b. 22 c. 100 d. 72 e. 15 f. 1 g. 28

(10)

IV. (2.0+2.0 = 4.0 val.)

a) Implemente a fun¸c˜ao int pares(int *v, int t) em C que, dado um vector de

inteiros e um inteiro com o seu tamanho, retorna a quantidade de n´umeros pares no vector.

(11)

b) Implemente a fun¸c˜ao int iguais(float *v, float *f, int tv, int tf) em C que, dado dois vectores de floats, v e f, e os seus tamanhos, tv e tf, retorna retorna o n´umero de valores em v que tamb´em est˜ao em f. Assuma que cada vector n˜ao contem n´umeros repetidos.

(12)

V. (2.0+2.0 = 4.0 val.)

a) Implemente a fun¸c˜ao recursiva int soma(int *v, int t) em C que, dado um

(13)

b) Implemente a fun¸c˜ao

void junta(float *a, float *b, float *c, int ta, int tb)

em C que recebe 3 vectores de floats, a, b e c e dois inteiros, ta e tb, e insere no vector c os elementos de a e b por ordem crescente.

Assuma que:

• os vectores a e b contˆem, respectivamente, ta e tb valores; • os vectores a e b j´a est˜ao ordenados por ordem crescente; • o vector c tem espa¸co suficiente para conter ta+tb valores. A solu¸c˜ao apresentada dever´a ser o mais eficiente poss´ıvel.

Referências

Documentos relacionados

A magnitude da barreira de potencial, V D , apresentou pouca influência da temperatura com valor médio de 0,71 ± 0,07 eV (Figura 43-b).. Os ajustes dos resultados obtidos em

Muitos dados científicos apontam a existência de uma significativa porcentagem de áreas de baixa aptidão agrícola e elevada aptidão florestal em paisagens de muitas

Padr˜ oes de intera¸ c˜ ao adequados para dissemina¸ c˜ ao de informa¸ c˜ oes quando os n´ os trocam mensagens apenas com seus vizinhos imediatos... Algoritmos e padr˜ ao

No entanto, verificamos que a CTX não foi capaz de inibir a presença de células Th1 CD4+Tbet+ nos linfonodos e lâmina própria dos animais Este trabalho mostrou que a CTX foi capaz

Foi realizado um estudo retrospectivo e analítico, sobre os 184.575 transplantes de córnea TC realizados no Brasil, em geral e por regiões, no período de janeiro de 2001 a dezembro

Segundo Russo (2017), a equipe caminha a passos lentos no aprendizado de utilização desse sistema de gerenciamento, o que, para o autor, demonstra uma oportunidade

Benefício Definido Capitalização não Programado Valor Atual dos Benefícios Futuros. Benefício Definido Capitais de Cobertura Benefício Definido

22º - A Sociedade será administrada por 3 (três) Diretores, eleitos pela Assembléia Geral, sendo um Diretor-Presidente, um Diretor Técnico e um Diretor