Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 23a de junho de 2008

Documentos relacionados
1 Exercícios com ponteiros

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

1 Questões de Múltipla Escolha

1 Exercícios com ponteiros

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Terceira Aula Prática - 10 de setembro de 2010

Faculdade de Computação

Conceitos básicos. Computação eletrônica: Gurvan Huiban

Algoritmos e Programação

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

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

Modulo 3: Else, Case, For...

Listas ligadas/listas encadeadas

EXERCÍCIO DE SONDAGEM TURMA 01 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

1 Escrita de Arquivos Binário

Linguagem C Princípios Básicos (parte 1)

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Quarta Aula Prática - 17 de abril de 2013

Programação Estruturada

Exercícios Repetição

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

Departamento de Informática PUC-Rio INF Estruturas de Dados Lista 2 Completa (Gerada em 8 de maio de 2006)

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

Laboratório 3 Comandos de repetição while, do-while e for

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

1ª Lista de Exercícios

Prática - Linguagem C. Exercícios - Desenvolvendo um pequeno projeto

Simulado da Prova Parcial 2 (01/08/2013)

COMANDOS DE DECISÕES. O COMANDO if. O comando if instrui o computador a tomar uma decisão simples. Forma Geral: if (expressão de teste) instrução;

Características da Linguagem C

3. Linguagem de Programação C

Aula 2 Comandos de Decisão

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

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

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

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

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

Linguagem de Programação C

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 05 de abril de 2010

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Linguagem C

Prova de Programação (21090) Data: 31 de Janeiro de 2008

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

Introdução à Programação

Sub-rotinas David Déharbe

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Linguagem C: Introdução

Seleção Múltipla Laços (while, do-while, for) AULA 05

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 14 de junho de 2017

Programação Estruturada

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

3.1 - Funções para manipular dados de entrada e saída padrão

Computação 2. Diego Addan Aula 3. Funções

Computação Informática

1. Escreva um programa que imprima a ordem reversa de caracteres de uma string digitada pelo usuário. Ex: Entrada: Hello World. Saída:.

4. Estruturas Fundamentais de Programação em C

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais

Exercícios: Vetores e Matrizes

Linguagem C. Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973.

Aula 16: Laços aninhados e desvios

Manipulação de Arquivos Binários

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Prova 2 - Computação

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Programação Básica. Estrutura de um algoritmo

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Working 03 : Conceitos Básicos II

Aula 3 PROFESSOR TUTA

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 }

DURAÇÃO DA PROVA: 2 horas

Aula 14: Repetição (Parte 2)

Linguagens de Programação I

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Computação eletrônica:

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 2º Semestre 2013/2014

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Revisão para Prova 2. Mirella M. Moro

Módulo 7 Cadeias de Caracteres

Instituto de Física Segundo Semestre de Diurno. Prova Substitutiva 15/12/2000

Atividade de laboratório listas encadeadas simples

Linguagem C (repetição)

PROGRAMAÇÃO COMPUTACIONAL

Comandos de controle de fluxo: if / for / while / do while.

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Comando Switch. Embora a escada if else-if possa executar testes de várias maneiras, ela não é de maneira nenhuma elegante.

Sintaxe Básica de Java Parte 2

Introdução à Ciência da Computação

Programação de Computadores II

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

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

prim = A ; prim = &A[0];

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Transcrição:

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 23a de junho de 2008 Nome: Assinatura: 1 a Questão: (2.0 pontos) Números Aleatórios Escreva um programa que gere N números aleatórios todos diferentes entre si. O valor N deve ser pedido ao usuário. Os números gerados devem ser gravados em um arquivo do tipo texto de nome fornecido pelo usuário. Abaixo está um exemplo de um programa que gera um número aleatório. #include<time.h> Listing 1: Programa do problema 1. int main (void) int i; srand(time(null)); i = rand(); printf("%d\n", i); 1

2 a Questão: (2.0 pontos) O programa 2 lê os dados de quatro quadrados e imprime os dados do quadrado que tem a maior área. Complete os pedaços que faltam. Assuma que os quatro quadrados têm áreas diferentes. typedef struct _PONTO int x, y; PONTO; typedef struct _QUADRADO PONTO origem; int largura, altura; QUADRADO; PONTO LePonto(void) /* complete aqui */ QUADRADO LeQuadrado( void) /* mais código aqui */ int Area(QUADRADO q) /* aqui também */ void ImprimeQuadrado( QUADRADO q) /* mais codigo */ int main (void) int quadrado, i, maiorarea; QUADRADO q[4]; Listing 2: Programa do problema 1(Quadrados). for (i = 0; i < 4; i++) q[i] = LeQuadrado(); quadrado = 0; maiorarea = Area(q[0]); for (i = 1; i < 4; i++) if (Area(q[i]) > maiorarea) maiorarea = Area(q[i]); quadrado = i; ImprimeQuadrado( q[ quadrado]); 2

3 a Questão: (1.0 ponto) O programa mostrado na listagem 3 foi salvo como argvc.c e compilado com o seguinte comando: gcc -o argvc argvc.c -Wall O programa imprimiu o seguinte resultado: 1 2 3 4 5 Qual foi o comando digitado pelo usuário para executar este programa. Explique a sua resposta. Listing 3: Programa do problema 1(argc argv). int main (int argc, char **argv) int i, a, b, c; if (argc < 5) printf("ola\n"); return 1; for (i = 1; i < argc; i = i + 2) c = argv[i][0]; switch (c) case i : sscanf(argv[i+1], "%d", &a); break; case f : sscanf(argv[i+1], "%d", &b); break; for (i = a; i < b; i++) printf("%d ", i); printf("\n"); 3

4 a Questão: (1.0 ponto) O que o programa 4 imprime caso os valores fornecidos sejam: 1 2 3 4 5 6 7 8 9-1 Justifique sua resposta. #define MAXN 10 Listing 4: Programa do problema 1. int f(int *m) if (*m < 0) else return *m + f(m + 1); int main (void) int m[maxn], i, x; for (i = 0; i < MAXN; i++) printf("%d? ", i); scanf("%d",&m[i]); x = f(m); printf("%d\n", x); 4

5 a Questão: (2.0 pontos) Aspas em TEX TEXé uma linguagem para formatação de textos desenvolvida por Donald Knuth. O texto desta prova foi formatado usando-se TEX. Esta linguagem, da mesma maneira que HTML, insere instruções de formatação no texto para produzir, desejavelmente, um documento bonito. Documentos bonitos devem usar e para produzir aspas ao invés de " (aspas duplas), que é o caracter normalmente disponível no teclado. O problema é que teclados normalmente têm uma única ` (aspas simples da esquerda ou acento agudo) e uma única (aspas simples pela direita ou apóstrofo). Em TEX é possível digitar dois acentos agudos (` ` ) para criar e dois apóstrofos ( ) para criar. O problema é que a maioria dos textos usam " para produzir aspas duplas. Por exemplo, se o arquivo texto original contiver a frase "Ser ou n~ao ser,"disse o poeta, "eis a quest~ao." então a saída do processamento do program TEX não ficará um texto bonito porque sairá assim Ser ou não ser, disse o poeta, eis a questão. Para que o resultado seja bonito é necessário que o arquivo contenha ` ` Ser ou n~ao ser, disse o poeta, ` ` eis a quest~ao. Tarefa Escreva um programa que converta texto contendo aspas duplas (") em texto com as modificações necessárias para que ele se transforme em texto bonito. Portanto, as aspas duplas (") devem ser substituídas por ` ` quando abrem uma citação e por quando fecham. Observe que os problemas de citações dentro de citações não existem. Sempre o primeiro " deve ser substituído por ` ` e o próximo por. Entrada A entrada é um texto espalhado por diversas linhas. O texto todo contém um número par de ". A entrada termina quando uma linha vazia for lida. Saída A saída é o texto com as modificações pedidas. Exemplo Exemplo de Entrada: "Ser ou n~ao ser", disse o poeta, "esta é a quest~ao". O Programador piadista respondeu: "Eu devo discordar. ` C ou n~ao ` C, esta é a quest~ao!" Saída para o Exemplo da Entrada ` ` Ser ou n~ao ser, disse o poeta, ` ` esta é a quest~ao. O Programador piadista respondeu: ` ` Eu devo discordar. C ou n~ao C, esta é a quest~ao! 5

6 a Questão: (2.0 pontos) Mapa do Tesouro Um arqueólogo descobriu um mapa do tesouro codificado de uma estranha maneira. O mapa está representado por uma matriz retangular cheia de caracteres. Após muita pesquisa o aventureiro descobriu o significado das letras. O mapa é como se fosse um tabuleiro de xadrez e o aventureiro deve andar uma casa de cada vez. A direção da próxima casa para onde ele deve ir é dada pela letra da casa onde ele está no momento. A figura 1 mostra as direções para onde o aventureiro deve andar e as letras correspondentes. Por exemplo, caso a casa onde estou contenha a letra C o aventureiro deve andar uma casa para a direita. A jornada termina quando ele chegar na casa com a letra T. Sempre há uma casa com esta letra no mapa. Caso o aventureiro tente segur um caminho diferente do indicado ele irá morrer. O aventureiro também descobriu no mapa as coordenadas da casa por onde ele deve começar sua jornada. H A B (0,0) (0,1) G C (1,0) F E D (3,3) Figura 1: Letras e direções e sistema de coordenadas Tarefa A sua tarefa é escrever um programa que leia o número de linhas e colunas do mapa, as coordenadas iniciais da caçada ao tesouro e em seguida o mapa. O programa deve imprimir as casas percorridas pelo aventureiro até o mapa. Entrada A entrada é composta pelos seguintes dados. Primeira linha contém dois inteiros com o número de linhas (linhas) e de colunas (colunas) do mapa. Segunda linha contém dois inteiros com as coordenadas iniciais (iini, jini) da caçada. Em seguida são fornecidas (linhas) linhas cada uma com colunas caracteres com as instruções. Saída Na saída o programa deve imprimir as coordenadas de todas as casas por onde passou e as coordenadas do local onde está o tesouro. Restrições O tamanho máximo de linhas e colunas é desconhecido. Use ponteiros. Exemplo 6

Exemplo de Entrada: 6 6 4 2 aaaaaa fdfggb aecdhb tgcbah abbdef bcdefg Saída para o Exemplo da Entrada Estou em i = 4 j = 2 Estou em i = 3 j = 3 Estou em i = 2 j = 4 Estou em i = 1 j = 3 Estou em i = 1 j = 2 Estou em i = 2 j = 1 Estou em i = 3 j = 1 Estou em i = 3 j = 0 Achei o tesouro em i = 3, j = 0 7