Prova de Recuperação
|
|
|
- Benedita Dinis Deluca
- 9 Há anos
- Visualizações:
Transcrição
1 Programação I Prova de Recuperação 1. (1 ponto) Considere um programa que leia de um arquivo de veículos os seguintes dados: placa de um veículo, ano de fabricação, consumo médio de combústivel, modelo e cor do veículo (uma palavra cada) e quilometragem rodada. Escreva as estruturas de dados para que se possa manipular tais informações. struct carro { char placa[10]; // pelo menos 8 caracteres para acomodar uma placa char cor[15]; char model[15]; int km; float consumo; // real para acomodar décimos de quilometro/litro int anofab; ; // n~ao declarar como global, deixando o cadastro como par^ametro!!! 2. (3 pontos) Considerando as estruturas da questão anterior e os modos corretos para passagem de parâmetros, escreva funções para: (a) Ordenar os veículos pelo ano de fabricação; (b) Ordenar os veículos pela sua placa; (c) Escrever os dados dos veículos em um arquivo; // uma funç~ao apenas para trocar dois elementos do vetor de estruturas void troca(struct carro cad[10000], int i, int j) {struct carro aux; aux = cad[i]; cad[i] = cad[j]; cad[j] = aux; // ordenaç~ao simples, veja algoritmo no material da disciplina!! void ordena_ano(struct carro cad[10000], int n) {int i, j, menor; for (i=0; i<n-1; i++) { menor = i; for (j=i+1; j<n; j++) if (cad[j].anofab < cad[menor].anofab) menor = j; if (menor!= i) troca(cad, i, menor); 1
2 // ordenaç~ao simples, veja algoritmo no material da disciplina!! // aqui apenas muda o campo de comparaç~ao, que passa a ser string void ordena_placa(struct carro cad[10000], int n) {int i, j, menor; for (i=0; i<n-1; i++) { menor = i; for (j=i+1; j<n; j++) if (strcmp(cad[j].placa, cad[menor].placa) < 0) menor = j; if (menor!= i) troca(cad, i, menor); // como é operaç~ao de escrita tem que saber o número de elementos // que ser~ao gravados (n) e faz-se um for escrevendo cada veículo void grava(struct carro cad[10000], int n) {FILE *out; int i; out = fopen("arq_saida.dat","w"); if (out == NULL) { puts("nao foi possível escrever o arquivo de saída"); exit(0); else { for (i=0; i<n; i++) { fprintf(out,"%s %s\n",cad[i].placa, cad[i].model); fprintf(out,"%s\n%d ",cad[i].cor, cad[i].anofab); fprintf(out,"%d %f\n",cad[i].km, cad[i].consumo); // printfs divididos apenas para caber na página :-) fclose(out); 3. (3 pontos) Problemas de caminho em labirintos podem ser tratados através de matrizes em que os obstáculos e paredes do labirinto são representados por um inteiro negativo e os caminhos abertos por zeros. Encontrar o menor caminho entre dois pontos do labirinto pode ser feito, então, marcando o ponto de partida com o valor zero e crescendo esse valor nas casas vizinhas em uma unidade até que se chegue ao ponto de destino, evitando as posições com valores negativos. Escreva um programa (usando modularização e se possível recursão) que leia três inteiros N, M e P, representando o número de linhas (N) e colunas da matriz (M) e o número de posições que representam obstáculos no labirinto (P). Em seguida deve ler P pares de inteiros, que representam 2
3 as coordenadas dos obstáculos. Deve então ler dois pares de inteiros, sendo o primeiro representando as coordenadas do ponto de partida e o segundo as coordenadas do ponto de destino. Após isso, seu programa deve encontrar o menor caminho entre partida e destino, guardando esse caminho num vetor de coordenadas. Deve então imprimir o caminho encontrado. Exemplo de labirinto e como ficaria o mapa do mesmo, considerando os pontos (0,3) como partida e (4,2) como chegada: #include "stdio.h" // essa funç~ao busca, recursivamente, os caminhos possíveis a partir do // ponto inicial, verificando se a casa seguinte pode ser trilhada e // ainda n~ao faz parte de um caminho mais curto void busca(int mat[1000][1000], int i, int j, int k, int n, int m) { // em cada if o primeiro teste verifica se n~ao vai avançar além da // borda, o segundo teste verifica se casa já n~ao foi percorrida e o // terceiro verifica se n~ao é obstáculo. Passando pelo teste, marca-se // a casa e chama a funç~ao recursivamente if ((i-1 >= 0) && (mat[i-1][j] > k) && (mat[i-1][j] > 0)) { mat[i-1][j] = k+1; busca(mat, i-1, j, k+1, n, m); if ((i+1 < n) && (mat[i+1][j] > k) && (mat[i+1][j] > 0)) { mat[i+1][j] = k+1; busca(mat, i+1, j, k+1, n, m); if ((j-1 >= 0) && (mat[i][j-1] > k) && (mat[i][j-1] > 0)) { mat[i][j-1] = k+1; busca(mat, i, j-1, k+1, n, m); if ((j+1 < m) && (mat[i][j+1] > k) && (mat[i][j+1] > 0)) { mat[i][j+1] = k+1; busca(mat, i, j+1, k+1, n, m); 3
4 // esta funç~ao imprime o caminho a ser seguido. Ela parte do ponto de // destino, recursivamente em direç~ao ao ponto de início. Quando chega // nele começa a voltar das recurs~oes imprimindo as coordenadas do // ponto em que está naquele momento. void mostra(int mat[1000][1000], int i, int j, int compr) {int k=i, l=j; if (mat[i][j] > 0) { if (mat[i][j-1] == compr-1) j = j - 1; else if (mat[i][j+1] == compr-1) j = j + 1; else if (mat[i-1][j] == compr-1) i = i - 1; else if (mat[i+1][j] == compr-1) i = i + 1; mostra(mat, i, j, compr-1); printf ("Em (%d, %d)...\n",k,l); // funç~ao para ler os obstáculos no labirinto void le(int mat[1000][1000], int n) {int i, j, k; for (k=0; k<n; k++) { scanf("%d %d",&i, &j); mat[i][j] = -1; main() {int labir[1000][1000], n, m, p, part[2], dest[2], i, j; scanf("%d %d %d",&n, &m, &p); // inicia todas as casas do labirinto com um número alto para // permitir que se busque o caminho curto recursivamente for (i=0; i<n; i++) for (j=0; j<m; j++) labir[i][j] = 99999; le(labir, p); scanf("%d %d", &part[0], &part[1]); scanf("%d %d", &dest[0], &dest[1]); labir[part[0]][part[1]] = 0; // diz que a posiç~ao inicial tem valor 0 busca(labir, part[0], part[1], 0, n, m); mostra(labir, dest[0], dest[1], labir[dest[0]][dest[1]]); 4
5 4. (3 pontos) Escreva uma função que receba um valor em reais (o troco de um pagamento) e retorne ao programa qual a melhor forma de dividi-lo nos valores possíveis de notas e moedas, reduzindo ao máximo o número de notas e moedas a serem retornadas. Considere que as notas e moedas possíveis são: 10, 5 e 2 reais em notas e 1, 0.50, 0.25, 0.10, 0.05 e 0.01 reais em moedas. void troco{float valor, int vet[10], int tipos[10]) // vetor tipos guarda os valores 1000, 500, 200, 100, 50, 25, 10, 5 e 1, // que ser~ao usados para encontrar as quantidades de notas e moedas de // cada valor {int i, quanto, resto; resto = (int)(valor*100); // converte o valor para uma quantidade // inteira de centavos for (i=0; resto > 0; i++) { vet[i] = resto/tipos[i]; resto = resto%tipos[i]; Comentários diversos: 1. Os operadores de resto e divisão inteira funcionam na forma esperada apenas para variáveis inteiras. Não funcionam para floats. 2. USEM parâmetros nas chamadas de funções. Eles resolvem metade dos problemas no tratamento de variáveis 3. USEM funções (modularização) em seus programas. Elas reduzem bastante o tamanho do código 4. USEM vetores quando tiverem que armazenar valores de mesmo tipo que sejam relacionados. Vejam como ficou a questão 4 em relação ao que vocês tentaram fazer. 5. A questão 3 era mais elaborada e demandava solução recursiva para não cair num emaranhado de if-then-else 6. As questões 1, 2 e 3 eram mais simples, sendo que não verdade não deveriam apresentar dificuldade alguma, pois na questão 2 a dificuldade era ordenar um vetor e vimos duas formas diferentes de fazer isso em sala e a questão 4 precisava apenas lembrar que vetores podem ser usados para retornar valores de uma função. 5
Analise o código abaixo:
Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k
Introdução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
CCO 016 / COM 110 Fundamentos de Programação
CCO 016 / COM 110 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 12 Agregados Homogêneos Variáveis Indexadas matrizes Variáveis Indexadas bi dimensionais
Aula 06 Introdução à Programação Matrizes
Aula 06 Introdução à Programação Matrizes Prof. Gustavo Callou [email protected] [email protected] Roteiro Matrizes Unidimensionais (Vetor) Bidimensionais String Exercícios Gustavo Callou DEINFO/UFRPE
Funções Vetores Matrizes
Funções Vetores Matrizes Além dos tipos elementares (float, double, char, etc.), é possível também passar um vetor ou uma matriz como parâmetro de funções. Quando um vetor é passado como parâmetro, o que
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Linguagem C vetores multidimensionais
Linguagem C vetores multidimensionais IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Operadores aritméticos, de comparação
Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
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.
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. Funções e estruturas básicas 1. Faça uma função que recebe a idade de uma
MC102 Algoritmos e Programação de Computadores
MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2014 Roteiro 1 Maior número 2 Soma de n números 3 Fatorial 4 Máximo Divisor Comum (MDC) 5 Números primos
Introdução à Programação
Introdução à Programação Aula 10 Matrizes Edirlei Soares de Lima Conjuntos Bidimensionais Uma matriz representa um conjunto bidimensional de valores. Exemplo de matriz de inteiros:
INF 1620 P3-02/07/02 Questão 1 Nome:
INF 1620 P3-02/07/02 Questão 1 Considere um arquivo texto que contém os nomes e as notas dos alunos de uma disciplina. As informações de cada aluno ocupam duas linhas do arquivo: a primeira linha contém
INF 1620 P2-14/10/05 Questão 1 Nome:
INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome
INF 1620 P4 30/06/07 Questão 1 Nome:
INF 1620 P4 30/06/07 Questão 1 O maior divisor comum (MDC) de dois números inteiros é o maior número inteiro que faz uma divisão exata (com resto zero) desses dois números. Por exemplo, o MDC de 32 e 40
Aula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos
LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1
Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 1 1. O programa seguinte tem vários erros em tempo de compilação. Encontre-os. Main() int a=1; b=2,
MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais
MC-102 Aula 04 Expressões Relacionais, Lógicas e Comandos Condicionais Instituto de Computação Unicamp 26 de Agosto de 2016 Roteiro 1 Expressões relacionais 2 Expressões lógicas 3 4 Exercícios (Instituto
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes
Computação 2 Aula 2 Vetores e Matrizes Profª. Fabiany [email protected] Vetores Vetor também é conhecido como variável composta homogênea unidimensional; Um vetor computacional é um variável composta
Métodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
INF 1620 P1-04/10/03 Questão 1 Nome:
INF 1620 P1-04/10/03 Questão 1 a) Implemente uma função para calcular as raízes de uma equação do segundo grau do tipo ax 2 +bx+c=0. O protótipo dessa função deve ser: void raizes (float a, float b, float
Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?
Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos
1 Resumo: Matrizes. 2.1 Como declarar uma matriz IME/USP. Departamento de Ciência da Computação
Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Matrizes 1 Resumo: Matrizes são estruturas bi-dimensionais utilizadas para armazenar dados de um mesmo tipo. Para declarar
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Condicional 1 Se 'C' é verdadeira Então?; 3 Condicional 1 Se 'C' é verdadeira Então? if (C)?; 4 Condicional 2 Se 'C' é verdadeira Então? Senão?? 5 Condicional
Aula 18 Algoritmos básicos de busca e classificação
Aula 18 Algoritmos básicos de busca e classificação Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas e classificação de tabelas estão entre os mais usados. Considere por exemplo
3.1 - Funções para manipular dados de entrada e saída padrão
1616161616161616161616161616161616161616161616161616 3- ENTRADA E SAÍDA EM C Os principais meios para executar operações de entrada e saída (E/S) são: Entrada e saída pelo console (ou padrão): teclado
Computação Informática
Computação Informática Linguagem C Matrizes em C Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO 1 Estrutura de Dados Homogênea matrizes Uma matriz computacional é um váriável composta capaz de armazenar uma
Working 05 : Modularização
Universidade Federal do Espírito Santo Centro Tecnólogico Working 05 : Modularização Objetivos: Entender como é estruturada uma função em C e lembrar como é feita a comunicação entre funções; Praticar
Linguagem C: Introdução
Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais
Linguagem C (estruturas condicionais)
Linguagem C (estruturas condicionais) André Tavares da Silva [email protected] Comandos de Controle de Fluxo Todos os comandos devem ser terminados com um ;. { e são usados para delimitar um
Métodos Computacionais. Vetores e Matrizes Dinâmicas
Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de
Prova 2 - Computação
Prova 2 - Computação A prova consiste na elaboração de um programa utilizando a linguagem C. Seu programa deve estar correto (sintática e semanticamente), além de organizado (nomes de variáveis, identação
Introdução à Programação em C (I)
Introdução à Programação em C (I) Factorial Definição de função para cálculo de factorial Scheme (define (factorial n) (if (= n 1) 1 (* n (factorial (- n 1))))) C int factorial (int n) { if (n == 1) return
Vetores(Arrays) Olimpíadas de Informática. Aulas preparatórias Introdução a Programação em C.
Olimpíadas de Informática Aulas preparatórias Introdução a Programação em C. Vetores(Arrays) Prof. Gemilson George [email protected] Blog: informaticageo.wordpress.com GEO.OBI Aula 05 Definição:
PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick [email protected], [email protected] Roteiro Funções Escopo de Variáveis Variáveis Globais
Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento
Universidade Federal de Goiás Instituto de Informática Introdução à Computação Professor: Julliano Rosa Nascimento Parte 1: Vetores Gabarito - Lista de Exercícios 5 Vetores e Matrizes 1) O que será impresso
SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos
Funções SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves ICMC/USP São Carlos Slides baseados no material gentilmente cedido pela Profa Simone Senger Souza 2 MODULARIZAÇÃO Um
CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho
CURSO BÁSICO DE PROGRAMAÇÃO AULA 15 Revisão Vetores e Matrizes Trabalho Definição: Introdução a Linguagem C Vetores Estrutura que permite armazenar um conjunto de dados do mesmo tipo na mesma variável;
LISTA DE EXERCÍCIOS MÊS 04
São José dos Campos, 05 de Junho de 2008 Disciplina: CES 10 Introdução à Computação. Semestre 2008-2º Período Professor: Carlos Henrique Quartucci Forster Estagiária: Michelle de Oliveira Parreira Instituto
DAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Introdução à Programação em C
Introdução à Programação em C Tipos e Operadores Elementares Estruturas de Controlo Resumo Novidades em C Exemplo: Factorial Tipos de Dados Básicos Saltos Condicionais: if-then-else Valor de retorno de
Introdução à Programação em C (I)
Introdução à Programação em C (I) IAED Tagus, 2009/2010 Organização de Ficheiros em C Organização Típica de Ficheiros em C Inclusão de bibliotecas de sistema Inclusão de bibliotecas locais Definição de
Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Programação Básica. Estrutura de um algoritmo
Programação Básica Estrutura de um algoritmo Código-fonte Como vimos na aula anterior um algoritmo pode ser representado usando um fluxograma Um algoritmo pode também ser representado usando texto Esse
Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,
Vetores(Arrays) Olimpíadas de Informática. Aulas preparatórias Introdução a Programação em C.
Olimpíadas de Informática Aulas preparatórias Introdução a Programação em C. Vetores(Arrays) Prof. Gemilson George [email protected] Blog: informaticageo.wordpress.com GEO.OBI Aula 05 Vetores
Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná
Linguagem C vetores IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C Estrutura de um programa Escrita e execução do primeiro
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Departamento de Informática PUC-Rio INF Estruturas de Dados Lista 2 Completa (Gerada em 8 de maio de 2006)
Departamento de Informática PUC-Rio INF1620 - Estruturas de Dados Lista 2 Completa 2006.1 (Gerada em 8 de maio de 2006) 1. Considerando a estrutura struct Ponto { int x; int y; para representar um ponto
Aula 16: Manipulação de Arquivos em C
Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33
