Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. (7,0) Utilizando alocação dinâmica de memória, implemente um programa que permita ao usuário 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 função, a saber: a. Entrar com a matrícula, sexo, salário e índice de produtividade (de 0,1 à 1,0) de cada um de seus n funcionários. b. Calcular a média salarial. c. Calcular o maior salário. d. Calcular o menor salário. e. Calcular a quantidade de salários maiores que a média salarial. f. Calcular a quantidade de salários menores que a média salarial. g. Calcular a quantidade de salários iguais a média salarial. h. Retornar a matrícula dos os funcionários que tem salário maior que a média salarial i. Retornar a matrícula dos os funcionários que tem salário menor que a média salarial. j. Retornar a matrícula dos os funcionários que tem salário igual a média salarial. k. Calcular gratificação salarial baseado na seguinte fórmula: gratificação = índice de produtividade * percentual do salário, onde percentual do salário é igual à: i. 100% para salários abaixo da média salarial. ii. 80% para os salários menores que (média_salarial + maior_salário) / 2. iii. 50% para os demais salários. l. Calcular o maior e o menor salário levando em conta as gratificações. O Observações: a. A quantia de funcionários é indefinida e não deve haver desperdício nem falta de memória relativo a esta quantia (i.e. utilizar alocação dinâmica de memória). b. As funcionalidades devem ser tratadas por funções. c. Funcionalidades efetivamente parecidas devem ser tratadas por uma única função cuja diferenciação será feita por meio de parâmetros da função e estruturas de decisão. Isto significa que se deve evitar a repetição de código/funções. d. Pelo menos a função que calculará o maior e o menor salário (considerando a gratificação) terá estes resultados devolvidos por meio de parâmetros por referência.Escreva um algoritmo que armazene o valor 10 em uma variável A e o valor 20 em uma variável B. A seguir (utilizando apenas atribuições entre variáveis) troque os seus conteúdos fazendo com que o valor que está em A passe para B e vice-versa. Ao final, exibir os valores que ficaram armazenados nas variáveis. Pontifícia Universidade Católica de Minas Gerais Campus Belo Horizonte Curso: Engenharia Mecânica/Elétrica Disciplina: Programação de Computadores II Professor: Francisco Borges Rodrigues Lista de Exercícios II – 26 de abril de 2014 – 7 pontos + 8 extras 2. (8,0) Implemente uma função 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 horário. void giraMatriz(int tamM, int tamN, int mat[M][N]) e. Multiplicar dois vetores de números inteiros e retornar o resultado da multiplicação 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 são anagramas boolean isAnagrama(char *v1, int tamV1, char *v2, int tamV2) h. Calcular a distância percorrida e o tempo de viagem (minutos) a partir de um vetor contendo, sequencialmente, as cidades visitadas e uma matriz 10x10 que contém as distâncias entre as cidades. A velocidade média foi de 100 km/h. int distanciaTempoViagem(int *v, int tamV, int mat[10][10], int *tempoTotal) OBSERVAÇÕES IMPORTANTES: 1. Deverá ser entregue um arquivo compactado (formato ZIP) contendo os códigos fonte (arquivos .c) referentes às soluções da questão 1 e um arquivo .h, nomeado com o nome do aluno (por ex.: Joaquim.h), contendo as implementações das funções com referentes à questão 2. As funções 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.
Compartilhar