Lista de Exercícios de Modularização 1. Faça um programa que leia as temperaturas mínimas e máximas ocorridas durante cada dia do mês de agosto. Para cada dia, informe a variação da temperatura e, para os dias atípicos, isto é, que tiveram temperatura mínima menor que 15 o C ou a máxima superior a 38 o C, envie a mensagem: CONTROLEM A POLUIÇÃO - CUIDADO COM A CAMADA DE OZÔNIO No final, informe a taxa de dias atípicos. 2. Faça um programa para processar a produção de árvores frutíferas para venda de uma fazenda. Inicialmente deverão ser lidas as seguintes informações: a quantidade de árvores frutíferas e a altura ideal para venda. A altura ideal é composta de 3 valores: milímetros, centímetros e metros. A seguir, para cada árvore frutífera, deverão ser lidos os seguintes dados: número de identificação e altura que é composta de 3 valores: milímetros, centímetros e metros. Este programa deverá exibir para cada árvore uma mensagem informando se ela está ou não na altura ideal para venda. Considere que a altura ideal é a altura informada com uma margem de erro de 1% para mais ou para menos. Modularize, obrigatoriamente, seu programa 3. Uma federação desportiva deseja manter atualizada as informações sobre os recordes femininos e masculinos de uma modalidade de natação Os atuais recordes serão informados, inicialmente, do seguinte modo: Sexo ( F ou M ), tempo do atual recorde (min, seg.) O desempenho dos nadadores que participaram do último campeonato será informado a seguir, do seguinte modo: Cód do atleta, tempo que executou a prova (min, seg.) O código do atleta, tem a seguinte formação: xyyy onde x é 1 para as atletas e 2 para os atletas Ao digitar o código de atleta 0 o programa encerra suas atividades Faça um programa que, baseado nestas informações, verifique se algum recorde foi batido. Neste caso, o recorde anterior deverá ser substituído. No final exiba os recordes e uma mensagem se os mesmos tiverem sido batidos neste campeonato. 4.Num parque de estacionamento de automóveis registra-se, ao longo de um dia, o movimento de entrada e saída de veículos. O parque está aberto diariamente das 8.00 às 24.00 horas. No registro do estacionamento constam as seguintes informações: Tipo (1) horista - (2) diarista Horário de entrada : hh/mm Horário de saída : hh/mm Valor pago A cobrança do estacionamento é diferenciada por turno, (sendo considerado para a determinação do turno, o horário de entrada) : manhã 8 12:00, Tarde: 12:01 17:00 Noite : 17:01 24:00
O cálculo do valor a pagar é dado segundo a seguinte tabela: 1ª h ou fração Valor básico do turno Até 2 horas 1.5 * valor básico do turno Até 4 horas 2.5 * valor básico do turno Acima de 4 h Acréscimo de 0.01 do valor básico do turno minuto ao valor de 4 horas Acima de 7 Valor da diária horas Faça um programa que leia o movimento registrado do estacionamento em um dia (término da entrada de dados é dada pelo tipo 0) e confira para cada registro se o valor pago foi correto enviando uma mensagem adequada. Informe, também, o número de diárias pagas e o percentual de valores incorretos e o valor médio pago. Inicialmente deve ser obtido o valor básico para cada um dos turnos e o valor da diária Faça uma função para codificar a tabela, para validar o valor do turno, para ler hora e min (validando), para calcular o tempo do estacionamento, para determinar qual o valor a ser usado (básico do turno ou diária) 5. Uma rede de livrarias, que vende livros nacionais e importados, utiliza a regra a seguir para o cálculo do preço de venda de seus livros livros nacionais: número de páginas * valor da página + valor da encadernação livros importados: valor de compra em dólar+ taxa de importação Há 2 tipos possíveis de encadernação: Tipo Valor Básico Acréscimo por página 1 18,00 Até 10 pág 0 Acima de 10 pág 0,1% 2 22,00 0,3% A taxa de importação depende da região de origem, descrita a seguir: Região Taxa sobre o valor de compra 1- América do Norte 20% 2 Europa 20% 43 -Demais 15% Faça um programa que inicialmente obtenha o valor do dólar. A seguir, para cada uma das 10 filiais da livraria, obtenha o código do livro, número de páginas, valor da página, tipo de encadernação, de cada livro nacional vendido por ela. A entrada de livros nacionais da filial é finalizada com um código 0. Só então, são fornecidos os dados dos livros importados desta mesma filial. Para cada livro importado é fornecido o código do livro, o valor de compra e o número da região de origem. A entrada de livros importados da filial, também, é finalizada com um código 0. Seu programa deve exibir para cada livro: o valor de venda para cada filial: o valor total de livros nacionais valor total de livros importados, para livraria: o valor de venda médio dos livros a quantidade percentual de livros importados Faça uma função p/: obter um valor validando-o; deve ser usada tanto para obter o valor dólar como para obter o valor da página Obter código válido de livro Obter o número de páginas validando-a;
Obter o tipo de encadernação, validando-o; Obter o número da região validando-a; Determinar o valor básico e o acréscimo por página Processar um livro nacional Processa um livro importados 6. O metrô codifica as passagens emitidas do seguinte modo: nxxx, onde n é número da estação e xxx é um número seqüencial.. O dia de pagamento do décimo terceiro salário é determinado de acordo com a tabela abaixo Número da Estação Número Seqüencial Dia 1 a 3 Até 500 5 Acima de 500 4 4 a 6 Até 200 2 Acima de 200 6 7 a 9 Até 800 3 Acima de 800 7 Complete o programa em linguagem que C para exibir o dia que o funcionário deverá receber seu décimo terceiro a partir da digitação de sua matrícula. A entrada de dados é finalizada pela matrícula 0. No final exiba o montante a pagar em cada uma das estações. a) Faça uma função obtém_matrícula com objetivo de só aceitar números válidos, isto é, na faixa 1001 a 9999 (pois representam uma matrícula) ou número 0. A função só deve ser finalizada quando um número válido for digitado. b) Faça uma função quebra_matrícula que recebe uma matrícula e devolve o número da estação e o número seqüencial que a compõe c) Faça uma função determina_dia que recebe o número da estação e o número seqüencial da matrícula do funcionário e devolve o dia do pagamento do décimo terceiro (de acordo com a tabela acima) void main(void) int matr, dia, n_est, n_seq; /* chamada da função obtém_matr */ while ( matr!= 0) /*chamada da função quebra_matrícula*/ /*chamada da função determina_dia*/ printf( "\n O dia do pagamento do décimo terceiro do funcionário %d é %d", matr,dia); /* chamada da função obtém_matr */
7. Uma agência de publicidade deseja promover descontos especiais para cartazes promocionais. Escolheu como estratégia de desconto o porte das companhias, que é determinado pela quantidade de funcionários de acordo com a tabela abaixo: Qt. de funcionários Classificação Desconto sobre o preço 01 a 10 1 10% 10 a 50 2 25% 50 a 90 3 35% acima de 90 4 40% Para cada empresa contatada pela agência obtém-se o código da empresa e número de funcionários da mesma. Faça um programa em C que obtenha, inicialmente o valor normalmente cobrado para a confecção de cartazes.. A seguir, o programa deve obter os dados de cada empresa contatada, informando o código, a classificação (porte) e o preço com desconto para a mesma. A entrada de dados termina com um código de empresa = 0 Faça uma função para: determinar classificação e o desconto sobre preço. obter o código da empresa validando-o. As empresas são codificadas segundo a seguinte regra: yyyx, onde x representa o ramo da empresa, podendo variar entre 1 e 9 No final exiba a quantidade de empresas em cada uma classe 8. Crie as funções e protótipos necessários ao correto funcionamento do programa abaixo. Não é permitido alterar a função main(). A função ledig() deverá realizar a leitura de um dígito ( 0 a 9 ) ou <enter> #include <stdio.h> void main(void) int num=0; while ((dig = ledig())!= \n ) alg= dig- 0 ; monta_num(&num,alg); printf ( O num resultante é: %d\n, num); Crie as funções abaixo: a) le_calcula_retorna_preco_venda: obtém o preço de custo de 3 produtos, calcula e retorna o preço de venda de cada um dos três produtos, separadamente. Desejase ter um lucro de 30% na venda do 1 o produto, 10% na venda do 2 o produto e 50% na venda do 3 o produto. b) trata_letra: recebe como parâmetro um caracter e, se o mesmo for uma letra minúscula, converte-a para maiúscula
9. Faça um programa para processar as vendas efetuadas nas diversas filiais de uma empresa. Inicialmente o programa deverá ler a quantidade de filiais. A seguir, para cada filial deverá ser lido o código da filial e as vendas efetuadas. De cada venda efetuada deverão ser lidos: código do produto, preço unitário do produto e a quantidade vendida do produto. Término da leitura das vendas: código do produto inválido. Este programa deverá exibir: a) para cada venda: código do produto e valor total da venda b) para cada filial: valor total de produtos perecíveis e valor total de produtos não perecíveis c) para a empresa: % de produtos nacionais e % de produtos importados ( em relação à quantidade) Faça as seguintes funções: le_verifica_codigo: obtém o código do produto, verifica se ele é válido ou não. Se for válido retorna 1, o código do produto e seus componentes. Caso contrário retorna 0. O código do produto tem a seguinte formação: XZYYY. X pode ser 1 (nacional) ou 2 (importado), Z pode ser 1 (perecível) ou 3 (não perecível) e YYY número seqüencial entre 1 e 900. contabiliza_total_nac_imp: recebe como parâmetro o componente X, a quantidade vendida, o total de produtos nacionais e o total de produtos importados. Esta função deverá atualizar um dos parâmetros recebidos para contabilizar o total de produtos nacionais e importados, separadamente. processa_filiais_vendas: obtém a quantidade de filiais, processa as filiais e as vendas. Nesta função deverão ser processados e exibidos os itens a, b e c, com exceção do que é feito nas duas funções acima. 10. Uma empresa classifica seus funcionários em 3 níveis de acordo com um índice de produtividade. São eles: (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário, de acordo com a seguinte tabela: Excelent 80 % do salário e base Bom 50 % do salário base Regular 30 % do salário base O índice de produtividade é calculado pela média mensal de produtividade de acordo com Excelent Média mensal superior a 50 a seguinte tabela: e (1) unidades Bom (2) Média mensal entre 20 e 50 Considere para cada funcionário, sejam unidades digitadas as seguintes informações: matr, Regular( Média mensal abaixo de 20 salário base 3) unidades produtividade de cada dia do mês Faça um programa para exibir para cada funcionário seu salário base, seu nível de abono e imprimir o salário a ser pago. O programa deverá processar novos funcionários até que o usuário digite 0 (zero) como matrícula do func. Modifique para que o programa deve fornecer também a matrícula do funcionário de maior abono e a média do abono para os funcionários classificados como Regular.
Faça uma função para: obter o salário validando-o;obter a produtividade de um dia validando-a;calcular a média mensal (esta função deve obter a produtividade de cada dia do mês e devolver a média mensal); determinar o índice de produtividade, determinar o acréscimo sobre o valor base;