Anda di halaman 1dari 2

Pontifcia Universidade Catlica de Minas Gerais

Campus Belo Horizonte


Curso: Engenharia Mecnica/Eltrica Disciplina: Programao de Computadores II Professor: Francisco Borges Rodrigues Lista de Exerccios II 26 de abril de 2014 7 pontos + 8 extras

1. (7,0) Utilizando alocao dinmica de memria, implemente um programa que permita ao usurio escolher entre um conjunto de funcionalidades relativas ao tratamento de uma folha de pagamento de uma empresa. Cada uma dessas funcionalidades dever ser implementada como uma funo, a saber: a. Entrar com a matrcula, sexo, salrio e ndice de produtividade (de 0,1 1,0) de cada um de seus n funcionrios. b. Calcular a mdia salarial. c. Calcular o maior salrio. d. Calcular o menor salrio. e. Calcular a quantidade de salrios maiores que a mdia salarial. f. Calcular a quantidade de salrios menores que a mdia salarial. g. Calcular a quantidade de salrios iguais a mdia salarial. h. Retornar a matrcula dos os funcionrios que tem salrio maior que a mdia salarial i. Retornar a matrcula dos os funcionrios que tem salrio menor que a mdia salarial. j. Retornar a matrcula dos os funcionrios que tem salrio igual a mdia salarial. k. Calcular gratificao salarial baseado na seguinte frmula: gratificao = ndice de produtividade * percentual do salrio, onde percentual do salrio igual : i. 100% para salrios abaixo da mdia salarial. ii. 80% para os salrios menores que (mdia_salarial + maior_salrio) / 2. iii. 50% para os demais salrios. l. Calcular o maior e o menor salrio levando em conta as gratificaes. O Observaes: a. A quantia de funcionrios indefinida e no deve haver desperdcio nem falta de memria relativo a esta quantia (i.e. utilizar alocao dinmica de memria). b. As funcionalidades devem ser tratadas por funes. c. Funcionalidades efetivamente parecidas devem ser tratadas por uma nica funo cuja diferenciao ser feita por meio de parmetros da funo e estruturas de deciso. Isto significa que se deve evitar a repetio de cdigo/funes. d. Pelo menos a funo que calcular o maior e o menor salrio (considerando a gratificao) ter estes resultados devolvidos por meio de parmetros por referncia.Escreva um algoritmo que armazene o valor 10 em uma varivel A e o valor 20 em uma varivel B. A seguir (utilizando apenas atribuies entre variveis) troque os seus contedos fazendo com que o valor que est em A passe para B e vice-versa. Ao final, exibir os valores que ficaram armazenados nas variveis.

2. (8,0) Implemente uma funo para cada uma das funcionalidades apresentadas abaixo: a. Ordernar um vetor de inteiros em ordem crescente ou decrescente. void ordernarVetor(int *vetor, int tam, char tipoOrdenacao), onde tipoOrdenacao poder recer os valores 'c' para crescente e 'd' para decrescente. b. Somar os elementos de uma matriz de inteiros MxN. int somarMatriz(int tamM, int tamN, int mat[M][N]) c. Trocar linhas de uma matriz 5x5 de inteiros sequencialmente da seguinte forma: troca-se os elementos da segunda com os da quinta linha; e, troca-se os elementos da primeira com os da quarta coluna. void trocaElementosMatriz(int tamM, int tamN, int mat[M][N]) d. Girar uma matriz 5x5 em 90 no sentido horrio. void giraMatriz(int tamM, int tamN, int mat[M][N]) e. Multiplicar dois vetores de nmeros inteiros e retornar o resultado da multiplicao em um terceiro vetor. int *multiplicaVetores(int *v1, int tamV1, int *v2, int tamV2) f. A partir de dois vetores, retorne um vetor ordenado em ordem crescente contendo os elementos dois vetores. int *ordenaVetores(int *v1, int tamV1, int *v2, int tamV2) g. Dados dois vetores, verificar se um vetor anagrama do outro. Ex: v1: Ator v2: Rota v1 e v2 so anagramas boolean isAnagrama(char *v1, int tamV1, char *v2, int tamV2) h. Calcular a distncia percorrida e o tempo de viagem (minutos) a partir de um vetor contendo, sequencialmente, as cidades visitadas e uma matriz 10x10 que contm as distncias entre as cidades. A velocidade mdia foi de 100 km/h. int distanciaTempoViagem(int *v, int tamV, int mat[10][10], int *tempoTotal) OBSERVAES IMPORTANTES: 1. Dever ser entregue um arquivo compactado (formato ZIP) contendo os cdigos fonte (arquivos .c) referentes s solues da questo 1 e um arquivo .h, nomeado com o nome do aluno (por ex.: Joaquim.h), contendo as implementaes das funes com referentes questo 2. As funes devem utilizar as assinaturas estabelecidas em cada uma das funcionalidades a serem implementadas. 2. O arquivo mencionado anteriormente dever ser submetido, via SGA, at as 09:00 do dia 26/04/2014.