Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Documentos relacionados
P3 Programação II Departamento de Informática/PUC-Rio 27 de junho de 2013

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Aluno: Para todas as questões desta prova considere os tipos estruturados abaixo:

P2 Programação II Departamento de Informática/PUC-Rio

INF 1620 P4-01/07/08 Questão 1 Nome:

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

P2 Programação II Departamento de Informática/PUC-Rio

INF 1620 P4 11/12/06 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P4 30/06/07 Questão 1 Nome:

INF 1620 P3-21/06/08 Questão 1 Nome:

INF 1620 P3-27/11/04 Questão 1 Nome:

INF 1620 P4-09/07/03 Questão 1 Nome:

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

INF 1620 P2-17/05/08 Questão 1 Nome:

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome:

SIMULADO PROVA. Questões Nota Revisão 1 (2.0) 2 (1.0) 3 (2.0) 4 (2.0) 5 (2.0) P1 (9,0)

INF 1620 P3-06/12/03 Questão 1 Nome:

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1007 P2 23/10/10 Nome: Instruções:

INF 1620 P1-14/04/07 Questão 1 Nome:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

INF 1620 P1-11/04/08 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P1-17/09/05 Questão 1 Nome:

INF P3-23/06/07 Questão 1 Nome:

INF 1620 P4-27/06/02 Questão 1 Nome:

INF 1620 P1-04/10/03 Questão 1 Nome:

INF 1620 P4-06/12/02 Questão 1 Nome:

PROVA P2 INF /10/2014 Programação II

INF 1620 P4-13/12/01 Questão 1 Nome:

INF 1620 P3-02/07/02 Questão 1 Nome:

Aluno: Matrícula: Turma:

MAC-115 Introdução à Computação para Ciências Exatas e Tecnologia IO Terceiro Exercício-Programa Entregar até 09/11/2007

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de Caracteres

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Módulo 7 Cadeias de Caracteres

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Caracteres e Cadeias de Caracteres

Programação II. Arquivos - Conceito. Arquivos

Introdução a Programação. Manipulando Arquivos em Modo Texto

Algoritmos e Estruturas de dados

Fundamentos de Programação 1

Métodos Computacionais. Arquivos

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

EPs 1 e 2. EP2: veja. EP1: veja

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Mestrado em Engenharia Física Tecnológica

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Lista de Exercícios para P1 INF1007 (Prog2) 15/04/2013. ATENÇÃO: O material a seguir não sofreu revisão e pode conter erros.

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Listas Lineares. continuando...

Introdução a Programação de Jogos

Introdução a Computação

Programação de Computadores II

Capítulo 6: Arquivos

Capítulo 06: Arquivos

Aula teórica: /6. Enunciado

Introdução à Programação

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Carlos Eduardo Batista. Centro de Informática - UFPB

INF 1620 P1-13/09/02 Questão 1 Nome:

Aula 26: Arquivos de texto

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Métodos Computacionais. Tipos Estruturados

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Computação 2. Aula 8. Profª. Fabiany Arquivos

Linguagem C. Ponteiros. Alex Vidigal Bastos.

TÉCNICAS DE PROGRAMAÇÃO

Mestrado em Engenharia Física Tecnológica

INF 1005 Programação I

Ponteiros. Baseado nos slides do Prof. Mauro.

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Apêndice B. Cadeias de Caracteres (Strings)

Verificando corretude da triangulação

Estrutura de um programa em linguagem C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Alocação dinâmica. PUC-Rio, , INF H: Programação 2 Lista 1: Alocação dinâmica, recursão e estruturas

Introdução a Computação

Cadeias de Caracteres (Strings)

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova

Introdução a Programação. Arquivos

INF1001: Introdução à Ciência da Computação P2 25/05/08 Nome:

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

#include <stdio.h> #include <stdlib.h>

Transcrição:

P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente resolvida nas folhas que constam deste caderno, utilizando- se frente e/ou verso; 3. A prova pode ser feita utilizando- se lápis ou caneta (azul ou preta); 4. Dispositivos eletrônicos (celulares, tablets, ) devem ser desligados. ATENÇÃO: nesta prova não há necessidade de escrever comandos #include nas respostas. Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0 Q1. (3.0 pts). Um programa trabalha com palavras codificadas. Uma palavra é armazenada utilizando- se duas cadeias de caracteres da seguinte forma: na primeira cadeia cada vogal da palavra original é substituída por um caractere em branco; e a segunda cadeia tem apenas a sequência de vogais que foram omitidas na primeira cadeia. Por exemplo: a palavra ESPIRITUAL é armazenada através das seguintes cadeias de caracteres: char w2[] = " SP R T L"; char vogais2[] = "EIIUA";. Escreva a função remonta que recebe as duas cadeias e retorna uma nova cadeia de caracteres em um novo espaço de memória do tamanho exato necessário contendo a palavra completa. Durante a montagem da nova cadeia, a função deve testar se há falha na codificação por falta de espaços em branco ou de vogais. ATENÇÃO: por questões de eficiência, a função não deve percorrer as cadeias mais do que uma vez. Nos casos de erro, a função deve retornar NULL, deve liberar qualquer área alocada e imprimir uma das seguintes mensagens: Erro: falta vogal, Erro: falta espaço em branco, Erro: memória insuficiente. Como exemplos de erro, temos as cadeias char w4[] = " SPR T L"; e char vogais4[] = "EIIUA"; gerando a mensagem Erro: falta espaco em branco ; e as cadeias char w2[] = " SP R T L"; e char vogais2[] = "EIUA"; gerando a mensagem Erro: falta vogal. 1

Q2 (2.5 pts). Considere um sistema que armazena o cadastro das consultas mensais de um médico como um vetor de ponteiros para o tipo Consulta descrito a seguir: struct consulta int dia; /* dia da consulta */ int hora; /* hora da consulta */ char paciente[81]; /* nome do paciente */ }; typedef struct consulta Consulta; Este vetor está ordenado por dia em ordem crescente e, para um mesmo dia, ordenado crescentemente por hora. Suponha que não há repetições de dia e hora. Primeiro complete a função buscaconsulta que implementa a técnica de busca binária para encontrar o índice do vetor v de tamanho n que corresponde a um determinado dia e uma determinada hora. Depois escreva a função auxiliar compconsulta. int buscaconsulta(consulta ** v, int n, int dia, int hora) int ini= ; int fim= ; int meio, cmp; while (ini ) meio= ; cmp=compconsulta( ); if ( ) else if ( ) else ; } return - 1; } 2

Q3 (2.5 pts). Considere que polinômios são representados por listas simplesmente encadeadas, onde cada termo do polinômio é um elemento da lista contendo o valor do coeficiente (float) e o valor do expoente (int), conforme o exemplo da figura abaixo: Note que o primeiro elemento é o de menor expoente (no caso, o termo constante de expoente 0). Primeiro apresente a estrutura do elemento desta lista usando struct e depois escreva a seguinte função que avalia o polinômio para um valor dado de x: double avalia(elemento * polinomio, float x) Por exemplo, para x = 2 e o polinômio da figura acima, a função retorna 153.00. 3

Q4 (2.0 pts). Considere que uma fábrica mantém os códigos de seus produtos organizados numa árvore binária de busca onde cada nó contém o código e o número de ocorrências de consulta a este código: struct noarv int codigo; int numocorrencia; struct noarv *esq, *dir; }; typedef struct noarv NoArv; A árvore está ordenada por ordem crescente de código. Por exemplo, na Fig. 2a, o produto de código 7 teve 2 ocorrências de consulta. Tirando proveito da ordenação da árvore, escreva a função recursiva consulta que, dado um código x, percorre a árvore e, se encontrar o código x, atualiza o número de ocorrência e retorna o endereço do nó encontrado. A função retorna NULL se não encontrar o código. Por exemplo, para a árvore da Fig. 2a, se x = 7, então a função incrementa o número de ocorrência e retorna o endereço do nó 7,3}. Se nova consulta for feita com x = 4, a função retorna o endereço de 4,4}, como mostra a Fig.2c. Fig. 2 4

stdio.h: int scanf (char* formato,...); int printf (char* formato,...); FILE* fopen (char* nome, char* modo); int fclose (FILE* fp); int fscanf (FILE* fp, char* formato,...); int fprintf (FILE* fp, char* formato,...); char*fgets(char* str, int size, FILE* fp); int sscanf(char* str, char* formato,...); stdlib.h: void* malloc (int nbytes); void free (void* p); math.h: double sqrt (double x); double pow (double x, double exp); double cos (double radianos); double sin (double radianos); string.h: int strlen (char* s); int strcmp (char* s, char *t); char* strcpy (char* destino, char* fonte); char* strcat (char* destino, char* fonte); char* strdup (char* s); 5