Anda di halaman 1dari 25

Cento Federal de Educao Tecnolgica de|Campos

Tcnico em Informtica Tcnicas de Programao / Algoritmo / Pascal Lista de Exerccios


Tpico: variveis; entrada e sada. Exerccios de fixao
1) Faa um programa que imprima o produto dos nmeros inteiros 35 e 47. 2) Faa um programa que imprima o produto dos nmeros inteiros 63 e 98. 3) Faa um programa que imprima a soma, a diferena, o produto e a diviso entre os nmeros inteiros 21 e 42. 4) Faa um programa que calcule a mdia aritmtica entre os nmeros inteiros 12, 25 e 53. 5) Faa um programa que leia um nmero inteiro e imprima o seu antecedente (inteiro anterior) e o seu sucessor (inteiro posterior). 6) Faa um programa que leia 2 nmeros inteiros e imprima o seu produto. 7) Faa um programa que leia 3 nmeros inteiros da entrada e imprima a sua mdia aritmtica.

Exerccios de fixao
13) Faa um programa que leia um nmero inteiro e imprima o seu valor absoluto (sem sinal). 14) Faa um programa que leia 2 nmeros inteiros e imprima uma mensagem dizendo se so iguais ou diferentes. 15) Faa um programa que leia 2 nmeros inteiros e imprima o maior deles. Suponha que os nmeros so diferentes. 16) Faa um programa que leia 2 nmeros inteiros e imprima o maior deles. Suponha que os nmeros podem ser iguais. Neste caso (iguais), imprima uma mensagem adequada para o usurio. 17) Faa um programa que leia um nmero inteiro e imprima uma mensagem dizendo se par ou mpar. 18) Faa um programa que leia 2 nmeros inteiros e os imprima em ordem crescente. 19) Faa um programa que leia 2 nmeros inteiros e os imprima em ordem decrescente. 20) Faa um programa que leia o ano de nascimento de uma pessoa e imprima a idade que ela ter at o fim de 2008.

Exerccios propostos
8) Faa um programa que leia dois valores inteiros representando, respectivamente, um valor de hora e um de minutos e informe quantos minutos se passaram deste o incio do dia. Exemplo: valores lidos 13 15 impresso

Exerccios propostos
21) Faa um programa que leia 3 nmeros inteiros e imprima o menor deles. 22) Faa um programa que leia 3 nmeros inteiros e os imprima em ordem crescente. 23) Faa um programa que leia 3 nmeros inteiros e imprima uma (e apenas uma) das seguintes mensagens: Todos os nmeros so iguais; Todos os nmeros so diferentes; Apenas dois nmeros so iguais. 24) Faa um programa que leia trs notas (valores reais) de um aluno, calcule sua mdia aritmtica e imprima uma mensagem dizendo se o aluno foi aprovado, reprovado ou dever fazer prova final. O critrio de aprovao o seguinte: Aprovado (mdia 7); Reprovado (mdia < 3); Prova final ( 3 mdia < 7). 25) Faa um programa que leia a idade (valor inteiro) de uma pessoa e informe sua classe eleitoral: 1

795 minutos

9) Faa um programa que leia o horrio de entrada (hora e minuto) e o horrio de sada (hora e minuto) de um empregado e imprima quanto tempo, no formato hora:minuto, o empregado ficou na empresa. 10) Faa um programa que leia 2 nmeros inteiros da entrada e imprima o resto da diviso inteira de um pelo outro. 11) Faa um programa que leia um valor representando o gasto realizado por um cliente do restaurante COMABEM e imprima o valor total a ser pago, considerando os 10% do garom. 12) Faa um programa que leia o valor de uma mercadoria e a porcentagem de desconto. O programa deve imprimir o novo valor com desconto.

Tpico: tomada de deciso

No eleitor (abaixo de 16 anos); Eleitor obrigatrio (entre 18 e 65 anos); Eleitor facultativo (entre 16 e 18 anos e acima dos 65 anos).

Tpico: repetio Exerccios de fixao


30) Faa um programa que imprima os nmeros inteiros de 1 a 100. 31) Faa um programa que imprima os nmeros inteiros de 23 a 578. 32) Faa um programa que imprima os nmeros inteiros de 100 a 1, nesta ordem. 33) Faa um programa que imprima os nmeros pares no intervalo de 1 a 300. 34) Faa um programa que imprima os nmeros mpares no intervalo de 531 a 750. 35) Faa um programa que leia um nmero da entrada e imprima os nmeros inteiros de 0 at este nmero. 36) Faa um programa que leia um nmero inteiro e imprima os nmeros pares entre 2 e o nmero lido. Suponha que o nmero lido da entrada ser maior que zero. 37) Faa um programa que leia um nmero inteiro (limite), um incremento (incr, inteiro) e imprima os nmeros inteiros de 0 at limite, com incremento de incr. Suponha que limite e incr so maiores que zero. Exemplo: Valores lidos: Sada do programa: 10 (limite) 3 (incr) 0 3 6 9

26) Faa um programa que leia um horrio no sistema de 24 horas e imprima este horrio no sistema de 12 horas. Exemplo: Valores lidos: Sada do programa: Observao: 0:00 6:00 12:00 22 32 10 32 pm

12:00 am 6:00 am 12:00 pm

27) Uma empresa deseja dar aos seus funcionrios, um abono de salrio de acordo com a sua produtividade. Sabe-se que a empresa divide os seus funcionrios nas seguintes categorias de acordo com o seu desempenho: timo (categoria 1) - 20% de abono Bom (categoria 2) - 15% de abono Regular (categoria 3) - 0 de abono Faa um programa que leia o salrio de um funcionrio e a sua categoria de abono (inteiro) e imprima o salrio total. 28) A loja de eletrodomsticos Pegue&Pague est com uma grande promoo de aniversrio. De acordo com o valor das compras dos clientes ser dado um desconto progressivo. As faixas de desconto so as seguintes: Compras at R$50,00 - desconto de 5% Compras de R$50,00 a R$100,00 - desconto de 10% Compras acima de R$100,00 - desconto de 15% Faa um programa que leia o valor total da compra do cliente e imprima o valor de desconto e o total a ser pago, de acordo com as faixas de desconto acima. 29) A loja Pegue&Pague resolveu aumentar sua promoo de aniversrio. As compras feitas com pagamento em dinheiro tero um desconto adicional de 5%. Modifique o programa anterior para que seja lido o tipo de pagamento (1 dinheiro, 2 - carto e 3 - cheque). Se o pagamento for em dinheiro deve ser aplicado o desconto adicional de 5%.

38) Faa um programa que leia um nmero inteiro e imprima os nmeros mpares menores do que este nmero. Exemplo: Valor lido: Sada do programa: 7 1 3 5

39) Faa um programa que leia um nmero inteiro (num) e imprima os num primeiros nmeros pares. Exemplo: Valor lido: Sada do programa: 6 2 4 6 8 10 12

Exerccios propostos
40) Faa um programa que imprima a tabuada de 5 no formato: 5x1=5 5 x 2 = 10 ... ... ... 5 x 10 = 50 41) Faa um programa que leia um nmero inteiro e imprima a tabuada deste nmero. Suponha que o nmero lido da entrada maior que zero. 42) Faa um programa que imprima as tabuadas dos nmeros inteiros de 1 a 10. 2

43) Faa um programa que imprima os nmeros inteiros de 1 a 100 e o valor de seu somatrio. 44) Faa um programa que leia um nmero inteiro (num) e imprima os nmeros inteiros entre 1 e num e o valor de seu somatrio. 45) Faa um programa que imprima a soma dos nmeros pares entre 25 e 100. 46) Faa um programa que leia um nmero inteiro (num) e imprima a soma dos nmeros pares entre 1 e num. Suponha que num ser maior que zero. 47) Faa um programa que leia um nmero inteiro (num) e imprima o somatrio dos num primeiros nmeros mpares. 48) Faa um programa que leia dois nmeros inteiros, representando os valores inicio e fim de um intervalo e imprima os nmeros inteiros neste intervalo. Exemplo: Valores lidos: Sada do programa: 5 9 5 6 7 8 9

53) Faa um programa que leia um nmero inteiro positivo e imprima o seu fatorial. Lembre-se que: n! = n x (n -1) x (n - 2) x ... x 1 0! = 1! = 1 54) Faa um programa que leia um nmero inteiro (num) e, a seguir, leia num nmeros inteiros e imprima, para cada nmero, o seu dobro. Exemplo: Valores lidos: Sada do programa: 5 3 10 12 2 1 6 20 24 4 2

55) Faa um programa que leia 20 nmeros inteiros positivos e imprima o maior deles. 56) Faa um programa que leia 20 nmeros inteiros (positivos e/ou negativos) e imprima o maior deles. Pergunta: qual a diferena para o exerccio anterior? 57) Faa um programa que leia um nmero inteiro (num), e a seguir leia num nmeros inteiros positivos e imprima o maior deles. 58) Faa um programa que leia um nmero inteiro (num) e a seguir leia num nmeros inteiros (positivos e/ou negativos) e imprima o maior deles. Pergunta: qual a diferena para o exerccio anterior? 59) Faa um programa que leia um nmero inteiro (num) e a seguir leia num nmeros inteiros e imprima o maior, o menor e soma dos nmeros lidos. 60) Faa um programa que leia uma seqncia de nmeros inteiros terminada por 0 (zero) e imprima o maior, o menor e a mdia aritmtica dos nmeros. O nmero 0 (zero) no faz parte da seqncia. Exemplo: Valores lidos: Sada do programa: 20 -3 4 -7 1 0 Maior = 20 Menor = -7 Mdia = 3 61) Faa um programa que leia uma seqncia de nmeros inteiros terminada por 0 (zero) e imprima o nmero que for mltiplo de sua posio (primeiro, segundo, terceiro, ) na seqncia. Exemplo: Posio: Valores lidos: Sada do programa: 1 2 3 4 3 16 5 5 3 7 8 16 5 0

49) Faa um programa que leia dois nmeros inteiros, representando os valores inicio e fim de um intervalo e imprima os mltiplos de 5 entre eles. Exemplo: Valores lidos: Sada do programa: 3 17 5 10 15

Perguntas: o que acontece se fim for menor que incio? Seu programa continua funcionando? 50) Faa um programa que leia dois nmeros inteiros, representando os valores inicio e fim de um intervalo e um nmero (num). O programa deve imprimir os mltiplos de num entre incio e fim. Exemplo: Valores lidos: Sada do programa: 1 15 3 3 6 9 12 15

Perguntas: o que acontece se fim for menor que incio? Seu programa continua funcionando? 51) Faa um programa que leia dois nmeros inteiros, representando os valores inicio e fim de um intervalo e imprima os nmeros pares entre incio e fim e seu somatrio. Exemplo: Valores lidos: Sada do programa: 3 15 4 6 8 10 12 14 Soma = 54 52) Faa um programa que leia um nmero inteiro (num) e imprima os mltiplos de 3 e 5 ao mesmo tempo, no intervalo de 1 a num. Exemplo: Valor lido: Sada do programa: 47 15 30 45

62) Faa um programa que leia uma seqncia de nmeros terminada por 0 (zero) e imprima a mdia aritmtica dos nmeros mpares e a soma dos nmeros pares. 63) Faa um programa que calcule e imprima o valor de 28. Dica: 28 = 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2. 3

64) Faa um programa que leia dois nmeros inteiros (X e Y) e calcule XY. Suponha que X e Y so positivos. 65) Faa um programa que calcule o produto de 2 nmeros inteiros lidos (num1 e num2) atravs do mtodo de somas sucessivas. Suponha que num1 e num2 so positivos. Exemplo: Valores lidos: Sada do programa: Dica: 3 4 12 3 x 4 = 3 + 3 + 3 + 3 = 12

gerados como a soma dos dois termos anteriores, ou seja, ai=ai-1+ai-2 para i 3. Escreva um programa que imprima os N (N lido e >= 2) primeiros termos da srie de RICCI. O programa deve imprimir, tambm a soma dos termos impressos. 74) (Prova 1 - 96/1) A srie de FETUCCINE gerada da seguinte forma: os dois primeiros termos so fornecidos pelo usurio; os termos seguintes so gerados como a soma ou subtrao dos dois termos anteriores, ou seja: ai = ai -1 + ai -2 ai = ai -1 - ai -2 ==> para i mpar ==> para i par

66) Faa um programa que leia 2 nmeros inteiros da entrada e imprima o resto da diviso inteira do primeiro pelo segundo, utilizando o mtodo de subtraes sucessivas. Exemplo: Valores lidos: Sada do programa: Dica: 15 4 3 15 % 4 = 15 - 4 - 4 - 4 = 3

Faa um programa que imprima os N (N lido e maior ou igual a 2) primeiros termos da srie de FETUCCINE. O programa deve imprimir, tambm a soma dos termos impressos. 75) Faa um programa que calcule e imprima os

67) Altere o programa do exerccio anterior para que, caso a diviso no seja exata, o usurio seja informado. 68) Faa um programa que leia uma seqncia de 50 nmeros inteiros e imprima o maior nmero da seqncia mltiplo de 2 e de 3 ao mesmo tempo. 69) Faa um programa que imprima os 10 primeiros termos da srie de Fibonacci, onde: primeiro termo a0 = 1 segundo termo a1 = 1 n-simo termo an = an - 1 + an - 2 (o n-simo termo formado pela soma dos 2 termos anteriores) 70) Faa um programa que leia um nmero inteiro (num) da entrada e imprima os num primeiros termos da srie de Fibonacci. 71) Faa um programa que leia um nmero da entrada e imprima os termos da srie de Fibonacci menores que este valor. 72) (Prova 1 - 96/1) Faa um programa que imprima a tabela de converso de graus CelsiusFahrenheit para o intervalo desejado pelo usurio. O programa deve solicitar ao usurio o limite superior, o limite inferior do intervalo e o decremento. Frmula de converso: C = 5x(F 32) / 9 Exemplo: Valores lidos: Sada do programa: 68 50 Fahrenheit 68 53 15 Celsius 20 11

XN termos da srie N ! , onde N varia de 0 a Y (X e


Y devem ser fornecidos pelo usurio). 76) Faa um programa que calcule o resultado de
I =N

( 1)

I
, onde N lido.

77) Dados N valores (inteiros e positivos) na entrada, faa um programa que teste quais valores esto dentro e quais esto fora do intervalo {1, 2, ..., 15}, escrevendo na sada o valor e a mensagem correspondente. O primeiro valor a ser lido na entrada N e N no um dos valores a serem testados. Alm disso, obter: a quantidade, soma e mdia aritmtica dos valores dentro do intervalo; a quantidade, soma e mdia aritmtica dos valores fora do intervalo. Exemplo: Valores lidos: Sada do programa: 5 3 18 7 22 50 3 est dentro do intervalo 18 est fora do intervalo 7 est dentro do intervalo 22 est fora do intervalo 50 est fora do intervalo 2 valores dentro do soma = 10 e mdia = 5 3 valores fora do intervalo, soma = 90 e mdia = 30 78) Uma das maneiras de se conseguir a raiz quadrada de um nmero subtrair do nmero os mpares consecutivos a partir de 1, at que o resultado da subtrao seja menor ou igual a zero. O nmero de vezes que se conseguir fazer a 4

intervalo,

73) (Prova 1 - 95/2) A srie de RICCI gerada da seguinte forma: os dois primeiros termos so fornecidos pelo usurio, a partir da, os termos so

subtrao a raiz quadrada exata (resultado 0) ou aproximada do nmero (resultado negativo). Exemplo: Raiz de 16 16 - 1 = 15 - 3 = 12 - 5 = 7 - 7 = 0 A raiz de 16 4 (4 subtraes at o zero). 79) Faa um programa que leia um conjunto de pedidos de compra e calcule o valor total da compra. Cada pedido composto pelos seguintes campos: nmero do pedido; data do pedido (dia, ms, ano); preo unitrio do item e quantidade. O programa dever processar novos pedidos at que o usurio digite 0 (zero) como nmero do pedido. 80) Refaa o exerccio anterior, sendo que s sero processados os pedidos cujo valor seja maior que R$ 1000,00. 81) Refaa o exerccio 1 de modo que sejam processados somente os pedidos realizados nos anos de 1994 e 1996. Ao final do processamento o programa dever indicar qual ano teve maior volume de compras. 82) Faa um programa que leia um nmero indeterminado de cartes contendo cada um a idade de uma pessoa e o sexo (0 - masculino, 1 feminino). O ltimo carto (que no entrar nos clculos) contm o valor da idade igual a zero. Calcule e imprima a idade mdia destas pessoas, quantas pessoas do sexo feminino esto na faixa dos 18 aos 25 anos e o nmero total de pessoas do sexo masculino. 83) Faa um programa que leia o preo de compra e o preo de venda de 100 mercadorias. O programa dever imprimir quantas mercadorias proporcionam: lucro < 10 % 10 % <= lucro <= 20 % lucro > 20 % 84) Faa um programa que leia as seguintes informaes sobre uma turma: nmero da turma; nmero de aulas dadas; nmero de alunos inscritos. Deve ser lido tambm para cada aluno inscrito o seu nmero de faltas. O programa deve imprimir o percentual de faltas para cada aluno e ao final do processamento o total de alunos reprovados por falta (25% de faltas). 85) Faa um programa que leia o salrio bruto dos 500 funcionrios de uma empresa, calcule o imposto retido e o salrio liquido para cada um

deles. Ao final do relatrio o programa dever imprimir os totais de salrio bruto, salrio lquido e imposto retido. O imposto retido dever ser calculado de acordo com a seguinte tabela: Faixa de salrio Imposto Salrio < 1000,00 0 1000,00 = Salrio < 10000,00 10% 10000,00 = Salrio < 25000,00 15% Salrio = 25000,00 20% 86) Faa um programa que leia um conjunto de valores inteiros positivos e cujo ltimo valor -1. Dentre os valores lidos, o programa deve imprimir: o menor valor dentre os maiores que 100 e menores que 1000; a mdia desses valores dentre os maiores que 100 e menores que 1000; a soma desses valores dentre os maiores que 100 e menores que 1000; a soma de todos os valores lidos. Observaes: o valor -1 no deve ser considerado para nenhum clculo. se nenhum valor estiver dentro do intervalo, o programa deve imprimir apenas uma mensagem para o usurio explicando o ocorrido. 87) As disciplinas do ciclo bsico do nosso curso possuem cdigos 108X, onde X pode variar de 0 a 9. Faa um programa que leia, para cada aluno, a sua matrcula (um inteiro de 1 a 2000), o cdigo da disciplina, o cdigo da turma (de 1 a 8) e a mdia final do aluno em cada disciplina. O programa deve imprimir, para a disciplina LTP1: o nmero de alunos da turma 1; a melhor mdia de alunos das turmas 1, 2, 3, 4 e 5; o total das mdias maiores que 7 das turmas 6, 7, e 8. Observaes: A disciplina LTP1 possui cdigo 1081 e 8 turmas. Considere um total de 2000 alunos e que todos os alunos cursaram todas as disciplinas (10). Os dados de um aluno sero digitados em seqncia, ou seja, ser lida a matrcula do aluno e, em seguida, todas as informaes sobre ele. Exemplo: Matrcula do aluno: 33 Cdigo da disciplina: 1086 Cdigo da turma: 5 Mdia Final: 8 Cdigo da disciplina: 1082 Cdigo da turma: 1 Mdia Final: 6 ... ... ... ... Cdigo da disciplina: 1085 5

Cdigo da turma: 4 Mdia Final: 3 88) Faa um programa que calcule e imprima o CR do perodo para os alunos do P15. Para cada aluno, o programa dever ler: nmero da matrcula; quantidade de disciplinas cursadas; notas em cada disciplina. Alm do CR de cada aluno, o programa deve imprimir o melhor CR dos alunos que cursaram 5 ou mais disciplinas. Observaes: o fim da entrada de dados marcado por uma matrcula invlida (matrculas vlidas: de 1 a 5000); o CR do aluno igual mdia aritmtica de suas notas. 89) Faa um programa que controle o saldo bancrio de um cliente. O programa l o valor do saldo anterior e em seguida l as operaes realizadas na conta. As operaes podem ser as seguintes: Saque em dinheiro (cdigo 10); Depsito (cdigo 33); Pagamento de cheque (cdigo 4). O programa l o cdigo das operaes e realiza as atualizaes na conta, imprimindo uma mensagem ao usurio caso seu saldo se torne negativo. O programa deve continuar a leitura at que o cdigo da operao seja zero. Cdigos diferentes dos definidos devem ser ignorados. Ao final do processamento o programa deve imprimir o saldo atual do cliente. 90) Uma biblioteca deseja fazer uma anlise sobre a consulta a seu acervo. Faa um programa que leia o cdigo de um livro, o nmero de exemplares e para cada um deles o nmero de emprstimos. O programa deve imprimir o total parcial de emprstimos para cada livro, e ao final deve imprimir o cdigo do livro mais emprestado pela biblioteca. A entrada de dados termina com um cdigo de livro negativo. 91) Uma empresa classifica seus funcionrios em 3 nveis de acordo com um ndice de produtividade. So eles: (1) Excelente, (2) Bom e (3) Regular. Cada nvel acrescenta um abono ao salrio base do funcionrio, de acordo com a seguinte tabela: Excelente 80 % do salrio base Bom 50 % do salrio base Regular 30 % do salrio base O programa deve ler a matricula do funcionrio, seu salrio base, seu nvel de abono e imprimir o salrio a ser pago. O programa deve fornecer tambm a matrcula do funcionrio de maior abono e a mdia do abono para os funcionrios classificados como Regular.

O programa termina ao ler um valor de matrcula negativo. 92) A TELEMAR deseja calcular as contas telefnicas de seus assinantes atravs do computador. A cobrana de seus servios feita da seguinte maneira: Assinatura telefone residencial (cdigo 1): R$ (100 pulsos includos) telefone comercial (cdigo 2): (100 pulsos includos) Servio local: R$ 0,09 por pulso excedente (acima de 100 pulsos) Servio despertador: R$ 5,00 por vez. Na entrada de dados teremos: cdigo do assinante; tipo do telefone (comercial ou residencial); nmero de pulsos registrados para chamadas locais e nmero de servios de despertador prestados. Faa um programa que leia os dados de um conjunto de assinantes (o cdigo do assinante igual a zero encerra a entrada de dados), calcule e imprima: para cada assinante, o total de sua conta; valor da maior conta e o cdigo do assinante que a pagou; o valor mdio arrecadado por assinante no ms. 93) Faa um programa que ajude o DETRAN a saber o total de recursos que sero arrecadados com a aplicao de multas de trnsito. O programa deve ler as seguintes informaes para cada motorista: o nmero da carteira de motorista (de 1 a 4327); o nmero de multas; o valor de cada uma das multas. Deve ser impresso o valor da dvida para cada motorista e ao final da leitura o total de recursos arrecadados (somatrio de todas as multas). O programa dever imprimir tambm o nmero da carteira do motorista que obteve o maior nmero de multas. O programa termina ao ler a carteira de motorista de valor 0. Valores invlidos de carteira de motorista no devem ser processados, embora suas multas devam ser lidas. 94) Faa um programa que implemente o jogo da senha (para 2 pessoas): o jogador 1 digita uma senha (valor inteiro entre 0 e 100) sem o conhecimento do jogador 2 6 R$ 30,00 50,00

o jogador 2 tem 5 chances para descobrir a senha a cada tentativa do jogador 2, o programa deve avisar se o valor digitado maior, menor ou igual senha se o jogador 2 acertar a senha, o programa no deve pedir mais nenhuma tentativa

para saber quanto o contribuinte deve pagar de imposto, utiliza-se tabela abaixo: RENDA LQUIDA IMPOSTO at R$ 1000 de R$ 1001 a R$ 5000 0 15%

95) Faa as seguintes alteraes no jogo da senha (uma de cada vez): se o valor digitado em uma tentativa tiver uma diferena igual a 1 para a senha, o programa deve avisar que T QUENTE!. Exemplos: senha 43 e valor digitado 42 senha 43 e valor digitado 44 ao final do jogo, se for o caso, enviar a mensagem Voc perdeu. Tente novamente depois no permita que o jogador 1 digite valores fora da faixa esperada (entre 0 e 100) ao final de uma partida, permita ao usurio jogar novamente

acima de R$ 5000 25% o valor de CIC igual a zero indica final de dados; o programa dever imprimir, para cada contribuinte, o nmero do CIC e o imposto a ser pago; ao final, o programa dever imprimir o total do imposto arrecadado pela Receita Federal e o nmero de contribuintes isentos; leve em considerao o fato do primeiro CIC informado poder ser zero.

96) (Prova 1 - 95/2) Faa um programa que calcule quantos litros de gasolina so usados em uma viagem, sabendo que um carro faz 10 Km/litro. O usurio fornecer a velocidade do carro e o perodo de tempo que viaja nesta velocidade, para cada trecho do percurso. Ento, usando as frmulas distncia = tempo X velocidade e litros consumidos = distncia / 10, o programa computar, para todos os valores no negativos de velocidade, os litros de combustvel consumidos. O programa dever imprimir a distncia e o nmero de litros de combustvel gastos naquele trecho. Dever imprimir, tambm, o total de litros gastos na viagem. O programa pra quando for digitado um valor negativo de velocidade. 97) Escreva um algoritmo que leia valores de venda de discos, CDs e fitas K7s de uma loja em um dia e desconte a comisso do vendedor (3%) e o repasse ao fornecedor (50%) para gerar o ganho da loja na venda de cada pea. O programa dever gerar uma listagem contendo o valor da venda, a comisso, o repasse e o ganho da loja para cada venda, totalizando os valores ao final. Os dados da entrada terminam com o valor de venda igual a 0 (zero). 98) (Prova 1 - 96/2) Faa um programa que calcule o imposto de renda de um grupo de contribuintes, considerando que: os dados de cada contribuinte (CIC, nmero de dependentes e renda bruta anual) sero fornecidos pelo usurio via teclado; para cada contribuinte ser feito um abatimento de R$ 600 por dependente; a renda lquida obtida diminuindo-se o abatimento com os dependentes da renda bruta anual;

99) (Prova 1 - 96/2) Faa um programa que leia um conjunto de notas de prova (0 a 10) de um conjunto de turmas. O programa dever ler a quantidade de turmas e, para cada turma: o cdigo da turma (inteiro positivo) a quantidade de notas a serem lidas (inteiro positivo) as notas da turma (inteiro positivo) O programa dever imprimir: a mdia aritmtica das notas de cada turma a maior nota de todas as turmas e o cdigo da turma a que ela pertence 100) (Prova 1 - 97/1) Faa um programa que calcule e imprima a mdia e a varincia das notas de todos os alunos inscritos em LTP1. As notas devem ser lidas via teclado. O fim da leitura marcado por uma nota negativa. A mdia e a varincia so calculadas da seguinte forma:

media=

numero de_ alunos _

notas

var iancia =

(notas )
2

numero_ de_ alunos

media2

Observar que (notas2) (notas)2 !!!!!!!! 101) (Prova 2 - 96/1) Faa um programa que calcule o valor da rea sob uma curva y = 1/x entre dois pontos. Tais pontos devero ser fornecidos pelo usurio assim como o passo (constante). O valor da integral indica a rea sob a curva, entre duas coordenadas x. Por exemplo, seja o grfico a seguir:

Valor da funo no ponto Passo A rea formada pela soma dos retngulos sob a curva B

... A

sua idade; sua opinio em relao ao filme, segundo: 1. timo 2. bom 3. regular 4. ruim 5. pssimo Elabore um programa que, lendo estes dados, calcule e imprima: a) a quantidade de respostas 1 (timo); b) a porcentagem de respostas 2 (bom) e 3 (regular) em relao ao total de respostas; c) a mdia de idade responderam 4 (ruim). das pessoas que

102) (Prova 1 - 97/1) Faa um programa que permita a uma empresa atacadista de cimento controlar os pedidos de compra e o estoque do produto. O programa inicialmente ir ler do teclado a quantidade de sacos de cimento disponveis no estoque da empresa (tipo inteiro) e o preo de cada saco (tipo real). Em seguida, o programa processar os pedidos de compra dos clientes da empresa. As informaes a serem lidas do teclado, para cada pedido, so as seguintes: cdigo do cliente (tipo inteiro) quantidade de sacos de cimento a serem comprados (tipo inteiro) Um pedido s poder ser aceito se a quantidade de sacos disponveis no estoque for maior ou igual quantidade de sacos do pedido. Se o pedido for aceito, o programa dever imprimir o cdigo do cliente, a quantidade de sacos pedidos e o valor do pedido, alm de subtrair do estoque a quantidade de sacos vendidos. Ao final dos pedidos, que ser detectado quando o cdigo do cliente for zero ou o estoque mnimo de cem sacos for atingido, dever ser impressa a quantidade de sacos em estoque. 103) (Prova 1 - 97/1) Faa um programa que gerencie as contas correntes dos 1000 clientes do Banco Oir Cup, um banco talo-anglo-franco-lusonipo-brasileiro. O programa dever ler, para cada cliente, o cdigo do cliente (tipo inteiro), saldo anterior (tipo real) e as movimentaes da conta. Cada movimentao composta por um cdigo (tipo caractere, C, D ou F, indicando Crdito, Dbito ou Fim das movimentaes deste cliente) e um valor (tipo real). Dever ser impresso, para cada cliente, o seu cdigo e o saldo atual (aps o processamento das movimentaes). Ao final, dever ser impresso o total de dinheiro em caixa no banco (soma dos saldos de todos os clientes) e o cdigo do cliente que possui o maior saldo. Observao: o menor saldo possvel de R$ 1000 negativo. 104) (Prova 1 - 98/1) Um cinema que possui capacidade de 100 lugares est sempre com ocupao total. Certo dia cada espectador respondeu a um questionrio, no qual constava:

d) a quantidade de pessoas acima de 65 anos que responderam 5 (pssimo). 105) (Prova 1 - 99/2) A concessionria de uma importante rodovia resolveu pesquisar o perfil de seus usurios que viajaram no feriado de 7 de setembro. Faa um programa que leia as seguintes informaes para um conjunto de veculos: tipo do veculo (0 - carga, 1 - passeio) nmero de passageiros Para os veculos de passeio tambm devem ser lidas as seguintes informaes: ano de fabricao do veculo; idade e sexo ('M' - masculino e 'F' - feminino) de cada um dos passageiros. A leitura de veculos termina com um tipo de veculo invlido. O programa deve imprimir, aps a leitura, as seguintes informaes: percentual de veculos de carga em relao ao total de veculos; Para os veculos de passeio: quantas mulheres estavam viajando; qual a idade da pessoa mais velha e o nmero de pessoas com esta idade, caso haja mais de uma; quantos carros fabricados na dcada de 80 passaram pela estrada. 106) (Prova 1 - 00/1) Faa um programa que leia 1000 nmeros reais e imprima os trs ltimos nmeros digitados no intervalo 25,78 a 87,52 (incluindo os extremos), respeitando a ordem em que foram digitados. O programa deve levar em considerao que podem existir 3, 2, 1 ou nenhum nmero neste intervalo, imprimindo os nmeros que aparecerem (3, 2, 1 ou nenhum nmero). 107) (Prova 1 - 00/1) O aeroporto Internacional do Rio de Janeiro deseja realizar algumas anlises sobre os vos que utilizam este aeroporto. Faa um programa que leia os dados de cada vo e gere um relatrio contendo: 8

para cada vo: nmero do vo e percentual de lugares ocupados em relao ao total de lugares total de lugares no ocupados nos vos internacionais total de lugares ocupados nos vos nacionais total arrecadado por vo (valor geral) Para cada vo, sero digitadas as seguintes informaes (que o programa deve ler!!!!): nmero do vo (inteiro) internacional (inteiro) total de lugares ocupados (inteiro) total de lugares no ocupados (inteiro) preo unitrio de cada passagem (real) A leitura dos dados termina ao se digitar 0 (ZERO) para o Nmero do vo. 108) (Prova 1 - 00/1) Os caminhes de uma empresa de mudanas podem ser carregados com os pertences (bens) de uma nica pessoa ou com pertences de diferentes pessoas. Faa um programa que, para cada caminho com mltiplos clientes, imprima o total de pertences transportados e o cdigo do cliente com maior nmero de pertences. No final, o programa dever imprimir o cdigo do caminho com maior nmero de clientes, bem como a carga mdia por caminho. O programa deve inicialmente ler o nmero de caminhes da empresa e para cada caminho: cdigo do caminho inteiro peso total da carga (em quilos) inteiro tipo da carga (1 cliente nico; 2 diversos clientes) inteiro Quando o tipo da carga for 2, para cada cliente cujos bens compem a carga, o programa dever ler tambm: cdigo do cliente inteiro peso da carga relativa ao cliente inteiro O trmino da leitura dos dados de cada caminho termina com cdigo do caminho igual a zero (0).

(Q) quadrado ( lado ) (R) retngulo (comprimento * largura) (C) crculo (3,14 * raio2 ) (T) trapzio ((base maior + base menor) * altura / 2) 111) Faa um programa que imprima as letras minsculas do alfabeto e seus respectivos cdigos decimais da tabela ASCII. 112) Faa um programa que leia uma seqncia de caracteres terminada por # e imprima o nmero de caracteres lidos. 113) Faa o chins do programa abaixo, mostrando exatamente o que seria impresso se fossem digitados os seguintes caracteres na entrada: EVA e ADAO#
void main (void) { char ch; int i = 0; while ((i<=10) && (ch=getch())!=#) switch (ch) { case A: case O: i++; putchar (E); break; case : putchar (!); case L: i = i +2; putchar ($); break; default: putchar (?); i++; } printf (\nAcabou); }

Tpico: caracteres Exerccios de fixao


109) Faa um programa que implemente uma mquina de calcular com operaes +, -, *, / e %, atravs da leitura de dois operandos numricos inteiros e do operador (tipo caracter), no formato: operando1 operador operando2. Verifique casos de operaes que no podem ser realizadas (antes de oper-las). 110) Faa um programa que calcula a rea de determinadas figuras geomtricas. O programa dever apresentar um menu com as seguintes opes:

114) (Prova 1 - 95/2) Uma equipe de vlei paga aos seus jogadores, alm do salrio, um valor adicional ao salrio mensal (bicho) que funo da produtividade de cada um. Essa produtividade paga de acordo com a tabela a seguir: classe Nome da classe valor adicional A Excelente +100% B Bom +80% C mdio +50% D regular +30% E Precisa treinar +10% mais F te cuida +5% G tsktsk nada Faa um programa que, dados o salrio (float) e o cdigo da classe de um jogador (char), calcule e imprima o seu salrio final e o nome da sua classe. 115) Faa um programa que leia uma seqncia de caracteres terminada por um <Enter> (linha de texto) e imprima a quantidade de caracteres lidos. 9

116) Faa um programa que leia uma linha de texto (seqncia de caracteres terminada por um <Enter>) e os imprima novamente na tela com exceo dos caracteres de espao em branco que no devem ser impressos. 117) Faa um programa que leia uma linha de texto (seqncia de caracteres terminada por um <Enter>) e imprima a quantidade de vogais minsculas, a quantidade de consoantes minsculas e a quantidade de caracteres no letras encontrados. 118) Faa um programa que leia uma linha de texto (seqncia de caracteres terminada por um <Enter>) e imprima a quantidade total de caracteres lidos e a porcentagem de caracteres do tipo letra encontrados. 119) Faa um programa que leia uma linha de texto e imprima a quantidade de letras maisculas e a quantidade de letras minsculas encontradas. 120) Durante a segunda guerra mundial, havia necessidade de codificao das mensagens transmitidas, para isso eram necessrios cdigos secretos, um desses cdigos era o POLAR/ZENIT, que consistia em trocar as ocorrncias da letra P pela letra Z e vice-versa, as letras O pelas letras E, e vice-versa, e assim por diante. Faa um programa que leia uma linha de texto e imprima os caracteres codificados segundo o cdigo POLAR/ZENIT. 121) Faa um programa que leia uma linha de texto e imprima o nmero de palavras que compe a linha. Considere que cada palavra esta separada por, exatamente, um nico caracter de espao. 122) Faa um programa que leia um caracter e uma linha de texto e imprima a posio do caracter na linha a cada vez que ele for digitado. O caracter pode aparecer mais de uma vez na linha. 123) Faa um programa que leia uma linha de texto e converta os caracteres maisculos em minsculos. 124) Faa um programa que leia uma linha de texto e converta os caracteres maisculos para minsculos e vice-versa.

espao; o texto comea por uma letra; no existem sinais de pontuao consecutivos. 126) (Prova 1 - 97/1) Faa um programa que leia uma linha de texto e substitua cada vogal lida por N vogais iguais, onde N representa o nmero de vogais lidas at ento. Para os demais caracteres, o programa deve imprimir apenas o prprio caractere. Considere que o usurio digitar apenas caracteres minsculos. O programa dever imprimir, ao final, o percentual de consoantes em relao ao total de caracteres digitados. Exemplo: Texto lido: Sada do programa: Percentual: um exemplo!!! um eexeeemploooo!!! 33.333333

Tpico: Funes Exerccios de Fixao


127) Faa uma funo que: receba um caractere como parmetro e retorne o seu correspondente em maisculo (se minsculo) ou o prprio caractere. receba um caractere como parmetro e retorne o seu correspondente em minsculo (se maisculo) ou o prprio caractere. receba um caractere como parmetro e retorne verdadeiro (1) se for letra e falso (0), caso contrrio. receba um caractere como parmetro e retorne verdadeiro (1) se for dgito e falso (0), caso contrrio. receba um caractere como parmetro e retorne verdadeiro (1) se for espao e falso (0), caso contrrio. receba um caractere como parmetro e retorne verdadeiro (1) se for letra maiscula e falso (0), caso contrrio. receba um caractere como parmetro e retorne verdadeiro (1) se for letra minscula e falso (0), caso contrrio. retorne o resultado de um nmero elevado a outro (ambos recebidos como parmetros). retorne o resto da diviso inteira de um nmero por outro. que receba um caracter como parmetro e retorne 1 caso seja uma consoante e 0 em caso contrrio. que receba um caracter como parmetro e retorne 1 caso seja uma vogal e 0 em caso contrrio. 128) Faa uma funo que receba um nmero inteiro como parmetro e retorne seu valor absoluto (sem sinal). 129) Faa uma funo que receba um caracter como parmetro por referncia. Se o caracter for uma letra minscula, a funo deve convert-la 10

Exerccios Propostos
125) (Prova 2 - 94/1) Faa um programa que leia da entrada padro (teclado) uma seqncia de caracteres, terminada pelo caractere '#' e imprima quantos caracteres, quantas palavras e quantas frases foram lidas. Observaes: Para facilitar, considere que: cada frase delimitada por '?', '!'ou '.'; cada palavra delimitada por '\n', '\t' ou espao; no existem espaos antes e depois de um sinal de pontuao; cada palavra separada das demais por um nico

para maiscula. A funo deve retorna 1 se o caracter for uma letra e 0 em caso contrrio.

Exerccios Propostos
130) a) Faa uma funo que receba como parmetros valores (inteiros) de hora, minutos e segundos e retorne o valor correspondente em segundos. b) Faa uma funo que receba um valor (inteiro) em segundos e devolva os valores de hora, minutos e segundos. Exemplo: 4230 segundos 1 hora 10 minutos 30 segundos c) Faa um programa, utilizando as funes dos itens anteriores, que leia o horrio de entrada (hora, minuto e segundo) e o horrio de sada (hora, minuto e segundo) de um trabalhador em um determinado dia. O programa deve imprimir a quantidade de horas, minutos e segundos que este trabalhador permaneceu na empresa. Exemplo: Horrio de entrada: 8hs 30min 0seg Horrio de sada: 16hs 15min 20seg O trabalhador ficou 7 horas, 45 minutos e 20 segundos na empresa. 131) Elabore uma funo que retorne o reverso de um nmero inteiro, por exemplo 932 239. 132) a) Faa uma funo chamada fatorial que deve receber um valor inteiro como parmetro e retornar o fatorial deste nmero. b) Faa um programa que calcule o valor da combinao de n elementos r a r. A frmula da n! r combinao a seguinte: Cn = . r ! ( n r ) ! Leia os valores de n e r da entrada e use a funo do item anterior para calcular o resultado. 133) Construa uma funo que, dado um nmero de conta corrente com trs dgitos, retorne o seu dgito verificador, o qual calculado da seguinte maneira: Exemplo: nmero da conta: 256 Somar o nmero da conta com o seu inverso: 256 + 652 = 908; Multiplicar cada dgito pela sua ordem posicional e somar este resultado: 9 0 8 9 0 8 x1 x2 x3 9 + 0 + 24 = 33 O ltimo dgito deste resultado o dgito verificador da conta (33 3). 134) Faa uma funo que calcule o peso ideal de uma pessoa. A funo deve receber o valor da altura da pessoa e um valor numrico indicando o 11

sexo (0 - masculino e 1 - feminino). A funo deve calcular o peso ideal de acordo com as seguintes frmulas: homens (72.7 * altura) - 58 e mulheres (62.1 * altura) - 44.7. Faa a funo main para completar o seu programa. A funo main deve ler a altura e o sexo de um conjunto de pessoas e imprimir o peso ideal at que seja digitado um valor negativo para altura. 135) O nmero irracional pode ser calculado atravs da expresso = 4

notas: 7 e 5 pesos: 2 e 3 mdia = (7 x 2 + 5 x 3) / 5 c) Faa uma funo que receba como parmetros o valor da mdia de um aluno (float), a nota mnima para aprovao (float) e a nota mnima para que o aluno possa fazer prova final. A funo deve exibir para o usurio a situao do aluno: aprovado, reprovado ou em prova final; d) Faa um programa, utilizando as funes anteriores, que processe as notas de um conjunto de 10 turmas. Para cada turma, o programa deve ler a quantidade de alunos matriculados, pesos das provas, nota mnima de aprovao e nota mnima para que o aluno possa fazer prova final. Para cada aluno, o programa deve ler suas notas, imprimir sua mdia e sua situao (aprovado, reprovado ou em prova final). 138) (Prova 2 2001/1) Uma loja, que comercializa peas de automveis, deseja saber a situao do seu estoque. A loja armazena as seguintes informaes de cada pea: cdigo da pea, quantidade atual em estoque, classificao da pea e preo unitrio. As peas so classificadas de acordo com a tabela abaixo: Classe Quantidade Quantidade mnima mxima 1 100 120 2 150 180 3 200 250 4 250 300 a) Faa uma funo que receba, como parmetro, a classificao da pea (int). A funo deve devolver a quantidade mnima em estoque (int) e a quantidade mxima em estoque (int). A tabela acima deve ser usada apenas como referncia para a elaborao da funo. Ela NO deve ser lida pelo programa. b) Faa uma funo que receba como parmetros: a quantidade atual em estoque (int), a quantidade mnima em estoque (int) e a quantidade mxima em estoque (int) da pea. Esta funo dever retornar se h ou no a necessidade de repor o estoque da pea (1 h necessidade, 0 no h). Havendo necessidade de reposio, esta funo deve tambm devolver a quantidade a ser comprada (int). A quantidade a ser comprada calculada da seguinte forma: se a quantidade atual em estoque for menor ou igual quantidade mnima, dever ser comprado o que falta para atingir a quantidade mxima em estoque. c) Faa um programa que leia as seguintes informaes sobre as 875 peas em estoque na loja: cdigo da pea (int), quantidade atual em estoque (int), classificao da pea (int) e preo unitrio (float). Para cada pea lida, o 12

uma funo em C que receba como parmetro (passagem por valor) o nmero de termos a serem usados no clculo de , e retorne o valor calculado para . 136) As razes de uma equao do segundo grau da forma ax 2 + bx + c = 0 podem ser calculadas atravs
2

( 1) i 2i + 1 . Construa i=0

da

expresso

x=

= b 4ac . Faa um programa completo em C que leia um nmero indeterminado de coeficientes a, b e c do teclado (o programa dever terminar quando o valor do coeficiente a for zero) e, para cada grupo de coeficientes, chame uma funo que calcule as razes da equao e as exiba no monitor, caso elas sejam reais, ou a mensagem Razes Imaginrias, caso elas sejam imaginrias.
A funo dever receber como parmetros os coeficientes a, b e c (passagem por valor) e as razes x1 e x2 (passagem por referncia). Os valores devolvidos pela funo atravs dos parmetros sero os seguintes: a) se > 0 , x1 e x2 contero duas razes reais e distintas; b) se = 0 , x1 e x2 contero duas razes reais e iguais; c) se < 0 , x1 e x2 no devero ser alteradas pela funo. O valor de retorno da funo ser o valor de ; indicando a quem chamou a funo a natureza das razes (reais e distintas, reais e iguais ou imaginrias). Obs: use a funo pow(x,y) para calcular xy, onde x e y so do tipo float. Lembre-se de que a raiz quadrada de um nmero real x igual a x0.5. 137) (Prova 2 - 2000/2) a) Faa uma funo que leia da entrada as duas notas (float) de um aluno; a funo deve devolver as informaes lidas (notas) atravs de parmetros por referncia; b) Faa uma funo que receba duas notas (float) e seus respectivos pesos como parmetros. A funo deve devolver a mdia ponderada dos valores. Exemplo:

b , 2a

onde

programa deve verificar se necessrio repor o estoque, exibindo a quantidade a comprar (int) e o valor a ser gasto na compra (float). Caso contrrio, deve ser exibida a mensagem: Estoque OK. Ao final da leitura das peas, deve ser exibido o valor total a ser gasto na reposio do estoque. Use as funes dos itens anteriores.

Por exemplo: texto: chave: sada:

abcdefghij 31524 caebdhfjgi

Tpico: vetores Exerccios de fixao


139) Faa um programa que leia uma linha de texto (de, no mximo, 80 caracteres), terminada com um <Enter> e imprima o inverso da linha que foi lida. Exemplo: Isto e apenas um exemplo olpmexe mu sanepa e otsI 140) Faa um programa que leia uma seqncia de 10 nmeros e informe o total de ocorrncias do ltimo nmero lido. Exemplo (supondo a seqncia de nmeros): 38 4 23 5 6 7 4 12 4 Resultado: O nmero 4 apareceu 3 vezes 141) A coordenao do TPD deseja saber quantos alunos esto cursando ao mesmo tempo as cadeiras de LTP1 e Organizao de Computadores. Faa um programa que leia os cdigos de matricula dos alunos de ambos os cursos, sabendo-se que existem 150 alunos cursando LTP1 e 120 alunos cursando Organizao de Computadores. O programa deve imprimir o cdigo das matriculas dos alunos que esto cursando ambas as disciplinas. 142) Faca um programa capaz de corrigir provas de mltipla escolha. Cada prova ter 10 questes, valendo 1 ponto cada uma. O programa deve inicialmente ler o gabarito da prova. Ele ser constitudo de um conjunto de dez caracteres representando a resposta para cada uma das questes. Cada questo pode ter uma das seguintes respostas: 'a', 'b', 'c', 'd' ou 'e'. Aps a leitura do gabarito, o programa devera ler as respostas dos alunos. Para cada aluno devera ser lido o seu numero de matricula e suas respostas. O programa devera calcular a nota do aluno e imprimi-la de acordo com o gabarito. A leitura termina com um cdigo de matricula negativo. Ao final, o programa devera imprimir a percentagem de aprovao, sabendo-se que a nota mnima e 5.

Ou seja, o texto dividido em pedaos do tamanho da chave (nesse caso 5). E cada pedao embaralhado da seguinte forma: em 1o lugar a 3a letra em 2o lugar a 1a letra em 3o lugar a 5a letra em 4o lugar a 2a letra em 5o lugar a 4a letra Faa seu programa para uma chave de 5 elementos e um texto de at 80 caracteres. Se o texto lido no tiver um nmero de caracteres mltiplo de 5, complete com espaos em branco. Por exemplo: texto: abcdefg novo texto: abcdefg Para esse caso a sada seria: sada: caebd f g

144) Faa um programa que leia uma seqncia de 10 nmeros reais da entrada e imprima somente uma vez cada nmero lido. Mesmo que o nmero seja digitado mais de uma vez na entrada, deve aparecer somente uma nica vez na sada. 145) Faa um programa que realize a reserva de passagens areas de uma companhia. Alm da leitura do nmero de vos e quantidade de lugares disponveis, ler vrios pedidos de reserva, constitudos do numero da carteira de identidade do cliente e do nmero do vo desejado. Para cada cliente, verificar se h possibilidade no vo desejado. Em caso afirmativo, imprimir o nmero da identidade do cliente, e o nmero do vo, atualizando o nmero de lugares disponveis. Caso contrrio, avisar ao cliente a inexistncia de lugares. 146) Uma locadora de vdeo possui 200 ttulos de filmes, codificados de 0 a 199. A locadora possui uma ou mais fitas para cada ttulo. Faa um programa em C que leia as seguintes informaes sobre cada fita: Cdigo do filme (0 a 199) Nmero de emprstimos (inteiro) Informe, na sada, para cdigo de filme, quantas fitas devem ser substitudas. Como um ttulo (filme) pode possuir mais de uma fita, na entrada de dados devem aparecer cdigos de filmes replicados, representando as diversas fitas daquele ttulo. A locadora considera uma fita inutilizvel e, portanto, passvel de substituio, aquelas que foram emprestadas mais de 500 vezes. A leitura

Exerccios Propostos
143) Faa um programa que leia uma linha de texto e uma chave, e embaralhe as letras da linha conforme a ordem dada pela chave.

13

termina quando for lido um cdigo de filme invlido. 147) Faa um programa para gerenciar um sistema de reservas de mesas em uma casa de espetculo. A casa possui 30 mesas de 5 lugares cada. O programa dever permitir que o usurio escolha o cdigo de uma mesa (100 a 129) e fornea a quantidade de lugares desejados. O programa dever informar se foi possvel realizar a reserva e atualizar a reserva. Se no for possvel, o programa dever emitir uma mensagem. O programa deve terminar quando o usurio digitar o cdigo 0 (zero) para uma mesa ou quando todos os 150 lugares estiverem ocupados. 148) (Prova 2 - 96/1) Faa um programa que leia 1000 valores reais da entrada e identifique o valor mais prximo da mdia. Exemplo supondo quatro valores: 2.5 7.5 10.0 4.0 mdia = 6.0 (no deve ser impresso) valor mais prximo da mdia = 7.5 (resultado a ser impresso) 149) (Prova 2 - 96/2) Faa um programa que leia dois vetores ordenados, de 100 posies cada, e gere um terceiro vetor, tambm ordenado, com todos os elementos dos vetores anteriores. Exemplo para vetores de 5 posies: entrada: sada: v1 = {1, 4, 5, 9, 111} v2 = (3, 3, 5, 8, 300} v3 = {1, 3, 3, 4, 5, 5, 8, 9, 111, 300}

153) Faa um programa que uma linha de texto e imprima as 5 letras minsculas de maior ocorrncia. Dica: faa um vetor de contadores, um para cada letra e ordene este vetor em ordem decrescente. 154) Faa um programa que leia uma linha de texto, terminada com um <Enter> e imprima a linha com suas palavras na ordem inversa. Considere que cada palavra separada por apenas um caracter de espao. Exemplo: Isto e apenas um exemplo exemplo um apenas e Isto 155) Faa um programa que permita armazenar os cdigos (inteiro) e o preo (real) de um conjunto de peas. O programa deve ser capaz de armazenar os dados de at 100 peas, com cdigos variando de 0 a 999. Construa o seu programa, de modo que o usurio seja capaz de incluir, excluir, consultar e alterar os dados de uma pea. Faa tambm uma opo permitindo que o usurio veja todas as peas j cadastradas.

Tpico: vetores & funes


156) Faa uma funo chamada inverte, que receba um vetor de nmeros inteiros e seu tamanho como parmetros. A funo deve inverter a ordem dos elementos do vetor, de modo que o primeiro elemento passe a ser o ltimo, o segundo passe a ser o penltimo e assim por diante. Faa um programa para testar a funo inverte. 157) Faa uma funo que receba um vetor de caracteres chamado linha e um caracter (ch) como parmetros. Retire todas as ocorrncias do caracter (ch) do vetor linha. O fim do vetor linha ser indicado pelo caracter '\n'. Faa um programa para testar a sua funo. 158) Faa uma funo que receba um vetor de inteiros (ordenados de forma crescente) e seu tamanho e retorne o maior valor menor que a mdia de seus elementos. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 159) Faa uma funo que receba um vetor de caracteres, seu tamanho e dois caracteres e substitua todas as ocorrncias do 1o caracter pelo 2o. Faa uma main() para testar sua funo, do jeito que voc achar 160) Faa uma funo que receba um vetor de inteiros positivos, um vetor de caracteres e o tamanho (nico) dos vetores. A funo deve imprimir cada um dos caracteres do 2o vetor n vezes, onde n o contedo da posio correspondente no vetor de inteiros. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 161) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne 1 (um) se o vetor 14

150) (Prova 2 - 96/2) Faa um programa que leia uma seqncia de no mximo 8572 nmeros reais, terminada por 0 (zero). O programa deve imprimir uma ocorrncia de cada nmero. Exemplo: entrada: sada: 1 1 4 9.5 1 800 4 -3.2 9.5 801 0 1 4 9.5 800 -3.2 801

151) (Prova 3 - 96/2) Faa um programa que leia uma seqncia de nmeros reais terminada por 0 (zero) (com, no mximo, 1000 nmeros diferentes) e imprima o nmero de maior ocorrncia. Note que pode-se ter mais do que 1000 nmeros na entrada de dados. 152) (Prova 2 - 97/1) Faa um programa que gerencie as informaes dos empregados de uma firma de calados. Para cada empregado dever ser lido o seu nmero de cadastro na empresa (inteiro) e o nmero de meses desde sua contratao. A firma possui 150 empregados. O programa deve imprimir o nmero de cadastro dos 30 empregados contratados mais recentemente. A firma contrata, no mximo, um empregado por ms.

estiver ordenado de forma crescente ou 0 (zero) se no estiver. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 162) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne o menor dos elementos pares do vetor. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 163) Faa uma funo que receba como parmetros dois vetores de reais, e um inteiro indicando a quantidade de elementos que os dois vetores tm. A funo dever retornar o produto interno dos dois vetores. Exemplo: X = (1,2,3,4) Y = (4,3,2,1) X.Y = 4 + 6 + 6 + 4 = 20 164) Faa uma funo que receba um vetor de n nmeros inteiros positivos e obtenha a maior diferena (em mdulo) entre dois elementos consecutivos deste vetor. O valor da maior diferena dever ser retornado pela funo. Exemplo: V = (1,2,4,7,8) A maior diferena em mdulo 3. 165) (Prova 3 - 96/2) Faa os prottipos (apenas!!) das funes f(), g() e h() utilizadas pela funo main() abaixo:
void main (void) { int v[6]={0,10,20,40,50,60}, y; float x, z; x = f g (x, g (z, z = h ... } (10); &y); &v[4]); (v[5], v); ... ...

b)
void main (void) { int v[6]={0, 10, 20, 40, 50, 60},y; float x, z; ... x = f g (x, g (z, z = h ... } ... ... (10); &y); &v[4]); (v[5], v); ... ...

167) (Prova 3 - 97/1) Faa as funes necessrias para que os programas abaixo funcionem conforme o esperado: a)
#include <stdio.h> void main (void) { int a, b, c, erro; scanf (%d%d, &a, &b); c = divide (a, b, &erro); if (erro) printf (Erro: diviso por zero\n); else printf (%d dividido por %d = %d\n, a, b, c); }

b)
#include <stdio.h> void main (void) { int v[5]={1, 2, 3, 4, 5}, i, j; printf (\nDigite as posies do vetor que devem ser trocadas); scanf (%d%d, &i, &j); troca (v, i, j); for (i=0; i<5; i++) printf (%d\n, v[i]); }

168) (Prova 4 - 96/1) Observe a funo main() abaixo:


void main (void) { int el[100],qtd; puts (Entre com o nmero de elementos a serem lidos); scanf (%d,&qtd); le_vet (el,qtd); computa (el,qtd); imprime (el,qtd); descomputa (el,qtd); imprime (el,qtd); }

166) (Prova 3 - 97/1) Faa os prottipos (apenas!!) das funes abaixo, baseado nas informaes dadas: a)
void main (void) { int a, b[10]; char d, e[10]; float g, h[10]; ... ... .... faz_tudo (a, &d, &g); g = faz_nada (a, b[1], b); no_sei (3.14, g, h[2], &h[3]); e[a] = ta_certo (); ... ... .... }

Faa as seguintes funes: a) le_vet(): esta funo l n elementos de um vetor, onde o nmero de posies e o vetor so recebidos como parmetros.

15

b) imprime(): esta funo imprime n elementos de um vetor, onde o nmero de posies e o vetor so recebidos como parmetros. c) computa(): esta funo soma a cada elemento do vetor todos os seus subseqentes, onde o nmero de posies e o vetor so recebidos como parmetros. d) descomputa(): esta funo restaura os valores originais do vetor, onde o nmero de posies e o vetor so recebidos como parmetros. Exemplo para 4 elementos lidos: Vetor original: 6 3 2 9 Vetor aps a execuo da funo computa(): 20 14 11 9 Vetor aps a execuo da funo descomputa(): 6 3 2 9 169) (Prova 2 - 97/1) Faa uma funo que receba como parmetros dois vetores de caracteres e as quantidades de elementos presentes em cada vetor (dois valores). A funo deve retirar do primeiro vetor todos os caracteres que NO aparecerem no segundo vetor (interseo) e retornar o nmero de caracteres restantes no primeiro vetor. Exemplo: parmetros: v1 = {w, b, q, o, a, -, t, p, x, r, u, o, y, v, a} v2 = {b, +, e, o, -, a, a, l, g, o, r, v, p} n1 = 15 n2 = 13 aps a execuo da funo: v1 = {b, o, a, -, p, r, o, v, a} v2 = {b, +, e, o, -, a, a, l, g, o, r, v, p} valor retornado pela funo: 9 Obrigaes do aluno: no declarar um terceiro vetor na funo. 170) (Prova 2 - 97/1) a) Faa uma funo chamada busca_bin() que recebe um vetor de inteiros, a quantidade de elementos e um valor a ser localizado no vetor (nesta ordem). A funo deve retornar a posio do valor no vetor ou -1, caso no o encontre. b) Faa uma funo chamada le_dados() que recebe dois vetores, um de cdigo (int) e outro de salrios (float), o tamanho dos vetores (iguais). A funo preenche os vetores atravs da entrada de dados padro (teclado). c) Uma empresa possui 100 vendedores. Cada vendedor recebe um salrio fixo e um abono de 1,5% sobre o valor de suas vendas. Faa um programa que calcule o salrio final a ser

pago a cada vendedor, de acordo com o volume de suas vendas. O programa deve ler inicialmente o cdigo de cada funcionrio (inteiro, entre 1533 e 2000) e seu salrio base, para todos os vendedores. Considere que estes dados sero fornecidos em ordem crescente por cdigo. A seguir, o programa dever processar as vendas, lendo o cdigo do funcionrio que realizou a venda e o valor da venda. Isto dever ser feito para cada venda realizada. O programa termina a leitura de vendas quando for digitado um valor de cdigo invalido (menor que 0). O programa deve calcular o abono a ser pago a cada vendedor, imprimindo seu salrio final. Observao: no item c) obrigatria a utilizao das funes dos itens anteriores, mesmo que voc no as tenha feito. 171) Voc foi encarregado de desenvolver um programa para controlar o estoque e as vendas das Organizaes Tabajara. O programa em questo ir ler inicialmente o cdigo, a quantidade disponvel em estoque e o preo dos produtos que estaro disponveis para a venda. O dados lidos do teclado sero armazenados em vetores; um cdigo de produto igual a zero indica o trmino do cadastramento de produtos. Sabese que as Organizaes Tabajara trabalham com no mximo 50 produtos diferentes. A segunda fase do programa a venda em si. Voc dever ler do teclado o cdigo do produto a ser vendido e a quantidade requerida. Se o cdigo do produto estiver cadastrado a venda poder ser realizada, caso contrrio a mensagem Produto no Cadastrado dever ser exibida no monitor. Caso o produto esteja disponvel, a venda s poder ser realizada se a quantidade disponvel no estoque for suficiente para atender ao pedido. Neste caso voc dever abater do estoque a quantidade vendida. Se o estoque no for suficiente para atender ao pedido a mensagem Estoque Insuficiente dever ser exibida no monitor. O final das vendas ser detectado quando o cdigo do produto for igual a zero. No final do programa voc dever exibir no monitor o valor vendido no dia e a relao de todos os produtos do estoque, com suas respectivas quantidades, em ordem decrescente de quantidade disponvel. Voc dever seguir os seguintes passos: a) Faa uma funo que leia do teclado os dados do estoque e armazene-os em vetores (passados como parmetro); b) Aps chamar a funo do item a, comece o processo de venda. Voc ir ler do teclado os pedidos e atualizar o estoque. Faa uma funo para fazer uma busca no vetor de cdigo de produtos para verificar se o produto existe;

16

No final voc dever exibir um relatrio. Faa uma funo para ordenar o vetor em ordem decrescente. 172) a) Faa uma funo que receba um vetor de inteiros e o preencha com valores lidos da entrada. A leitura termina ao ser lido um valor fora do intervalo [100, 999]. A funo deve retornar a quantidade de valores vlidos lidos. b) Faa uma funo que receba um vetor de reais e seu tamanho (inteiro) como parmetros e inicialize com zero (0) todos os elementos do vetor. c) Faa uma funo que receba um vetor de inteiros, seu tamanho (inteiro) e uma chave (inteiro) como parmetros. A funo deve retornar a posio da chave no vetor ou -1, caso a chave no faa parte do vetor. d) O pronto-socorro Jesus te Chama quer fazer a contabilidade dos atendimentos efetuados no ms. O PS tem 20 centros de atendimento (com nmeros entre 1 e 20) e at 200 mdicos com matriculas entre 100 e 999. Faa um programa que leia, inicialmente, a matrcula dos mdicos desses centros. O cadastramento termina quando uma matrcula invlida for lida. A seguir o programa ir ler do teclado a relao dos atendimentos efetuados no ms. Cada atendimento consta de um nmero de atendimento e um valor cobrado, em reais, pelo mesmo. O nmero de atendimento um inteiro com 5 dgitos, onde os dois primeiros indicam o centro de atendimento e os outros 3 a matrcula do mdico que efetuou o atendimento. A leitura termina quando o nmero do atendimento for igual a zero. No final o programa deve exibir, no vdeo, o valor faturado por cada medico do PS, o valor faturado por cada centro de atendimento e o total faturado por mdicos que no constam do cadastro de matriculas. Suponha que o nmero do atendimento poder conter uma matricula no cadastrada, mas o nmero do centro de atendimento estar sempre correto. Utilize as funes dos itens anteriores, obrigatoriamente. 173) (Prova 2 2000/1) Faa um programa que simule o jogo da senha. No jogo original, um dos jogadores escolhe uma seqncia de 4 peas coloridas, podendo haver repetio de cores, e o outro tenta adivinhar. A cada tentativa informado quantas peas esto na posio correta e quantas esto em posies erradas mas com as cores corretas. No nosso programa, as cores sero representadas pelos nmeros de 1 a 10 e NO haver repetio de cores. a) Faa uma funo que receba como parmetros: um vetor com a jogada correta (4

posies) e um vetor com a tentativa do jogador (4 posies). A funo deve imprimir uma mensagem para o usurio informando quantas peas esto na posio correta e quantas esto com as cores corretas mas em posies erradas. Caso o jogador tenha acertado todas as peas (vetores iguais), a funo deve retornar o valor 0; caso contrrio, deve retornar 1. b) Faa um programa, usando a funo do item a, que leia a jogada original e permita 5 tentativas ao jogador. Em cada tentativa, deve ser lido o palpite do jogador, deve ser exibido o resultado (item a) e em caso de acerto (tudo na posio correta) deve ser terminado o jogo. Exemplo: jogada: tentativa: 8257 3487

1 na posio correta (7) 1 na posio errada (8) 174) (Prova 2 2000/2) Faa um programa que gerencie os gastos realizados pelos clientes de um restaurante. O programa deve, inicialmente, ler o preo de cada um dos 8752 produtos servidos no restaurante (os cdigos dos produtos variam de 0 a 8751; os preos sero digitados em ordem de cdigo de produto). Em seguida, deve apresentar um menu com as opes disponveis (Acrescentar valor na conta de uma mesa, Trocar a mesa do cliente, Encerrar conta de uma mesa, Fim do programa) at que o usurio deseje terminar o uso do programa. O programa deve utilizar as seguintes funes (feitas por voc): a) funo menu ( ): imprime um menu com as opes do programa e retorna um caracter (A, T, E, F) representando a opo escolhida pelo usurio; a funo deve retornar apenas uma das opes vlidas; b) funo troca_mesa ( ): recebe como parmetros o vetor de gastos das mesas (vetor de reais), o nmero da mesa atual (inteiro), o nmero da nova mesa (inteiro) e atualiza o vetor de gastos; a funo deve retornar 0, caso a operao seja realizada com sucesso e 1, caso contrrio (mesa nova ocupada; mesa ocupada aquela que j consumiu algum produto); c) funo encerra ( ): recebe como parmetros um vetor de gastos das mesas, o nmero da mesa do que deseja encerrar a conta e imprime o gasto total daquela mesa e libera a mesa. Observao: o restaurante possui mesas numeradas de 1 a 50. No caso de pedido de troca de mesa com mesa destino ocupada, avisar ao usurio da impossibilidade.

Tpico: matrizes Exerccios de fixao


17

175) Faa um programa que leia uma matriz de nmeros inteiros de dimenses 4x4 e imprima a soma dos valores de cada linha e a soma de todos os elementos da matriz. 176) Faa um programa que leia uma matriz de nmeros inteiros de dimenses 4x5 e imprima a soma dos valores de cada linha e a soma de todos os elementos da matriz. 177) Uma estao meteorolgica registra a temperatura ocorrida em uma cidade a cada hora. Faa um programa que leia as temperaturas de uma semana no seguinte formato: dia, hora, temperatura. A leitura termina com um dia invlido. O programa deve informar para cada hora consultada, a maior temperatura ocorrida na semana. As consultas terminam com um valor de hora invlido. 178) Faa um programa que analise um carto de loteria esportiva e diga qual dos 13 jogos possui um triplo, ou se no existir, um duplo. O programa deve ler da entrada a configurao do carto e em seguida informar o jogo mais marcado. Dica: fixar a linha e variar a coluna. 179) Refaa o exerccio anterior de modo a descobrir qual das colunas do carto possui mais marcaes, se a coluna um, a coluna dois ou a do meio. Dica: fixar a coluna e variar a linha. 180) Construa um programa que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos. 181) Construa uma funo que receba como parmetro uma matriz quadrada 4x4. A funo dever devolver 1, se a matriz for simtrica, ou 0, caso contrrio. 182) (Prova 3 - 96/1) Faa um programa que leia uma matriz de inteiros A quadrada de ordem 100 e calcule a sua transposta AT. Exemplo para matriz de ordem 4 (apenas um outro exemplo!!!):

O programa dever calcular, para cada aluno, a mdia de suas notas, que deve ser armazenada na stima coluna da matriz. Aps o clculo da mdia, o programa dever ordenar a matriz pela mdia de cada aluno. Utilize a funo main() abaixo.
#include <stdio.h> #define C 7 #define L 100 void void void void void void le_matriz (int [][C]); media_alunos (int [][C]); ordena_matriz (int [][C]); troca_linha (int [][C], int, int); troca (int *, int *); imprime (int [][C]);

void main (void) { int i, j; int m[L][C]; le_matriz (m) media_alunos (m); ordena_matriz (m); imprime (m); }

Teste seu programa com os seguintes dados: Matrcula N1 N2 N3 N4 N5 134 8 5 7 9 10 99 8 6 5 2 3 120 10 9 10 10 8 A matriz resultante ser: Matrcula N1 N2 N3 99 8 6 5 134 8 5 7 120 10 9 10

N4 2 9 10

N5 3 10 8

Mdia 3 7 9

1 5 A = 9 13

4 6 7 8 10 11 12 14 15 16 1 5 9 13 2 6 10 14 AT = 3 7 11 15 4 8 12 16 2 3

184) A Escola Pagou Passou possui 10 turmas, com, exatamente, 60 alunos em cada uma. A sua diretoria resolveu fazer o acompanhamento do rendimento dos alunos matriculados em cada uma das turmas. Para atender as necessidades da diretoria voc dever construir um programa que faa o seguinte: a) defina duas matrizes para armazenar as matrculas e as notas dos alunos das 10 turmas, cada qual com exatamente 60 alunos; b) faa uma funo que leia do teclado a matrcula e a nota dos alunos e armazene-as nas respectivas matrizes, turma a turma. Lembre-se de que a escola tem exatamente 10 turmas, cada uma das quais com exatamente 60 alunos. A funo dever receber as duas matrizes como parmetros; c) faa uma funo que calcule e exiba no vdeo a mdia de cada turma, armazenando-as em 18

Exerccios Propostos
183) Faa um programa que leia o nmero de matrcula de 100 alunos e suas notas (5 notas para cada aluno). O programa deve armazenar todos os dados em uma matriz: a matrcula na primeira coluna e as notas nas colunas seguintes.

um vetor de mdias com 10 elementos. As matrizes e o vetor devero ser passados como parmetros; d) faa uma funo que percorra a matriz de notas, turma a turma, exibindo no vdeo, uma a uma, as matrculas dos alunos cujas as notas ficaram abaixo da mdia das respectivas turmas. e) a funo main dever chamar cada uma das funes acima de maneira que o programa cumpra o seu objetivo corretamente.

194) Refaa a questo anterior considerando os caracteres ., ,, ; como separadores de palavras, alm do espao em branco. 195) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar a primeira posio onde o caracter foi encontrado na string ou -1 caso o caracter no aparea na string. 196) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar a ltima posio onde o caracter foi encontrado na string ou -1 caso o caracter no aparea na string. 197) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retirar todas as ocorrncias deste caracter da string. 198) Faa uma funo que receba uma string como parmetro e dois caracteres. A funo deve trocar toda a ocorrncia do primeiro caracter na string pelo segundo caracter. 199) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar o nmero de vezes que o caracter aparece na string. 200) Faa uma funo que receba uma string como parmetro, um caracter e um valor numrico. A funo deve preencher a string com tantos caracteres quanto for o valor numrico passado com parmetro. 201) Faa uma funo chamada strncpy que recebe duas strings (s1 e s2) e um valor numrico como parmetros. A funo deve copiar tantos caracteres quanto o valor numrico, da string s2 para a string s1. 202) Faa uma funo chamada copia_str_i que compara duas strings (s1 e s2) passadas como parmetro, no diferenciando maisculas de minsculas. A funo deve retornar: 0 se as strings forem iguais; um valor menor que 0 se s1 for menor que s2 e um valor maior que 0 se s1 for maior que s2.

Tpico: strings Exerccios de Fixao


185) Faa uma funo chamada copia_str que recebe duas strings como parmetros e copie todos os elementos da segunda string para a primeira, apagando-a. 186) Faa uma funo chamada tam_str que recebe uma string como parmetro e retorne o nmero de caracteres da string. O caracter \0 no deve ser considerado na contagem. 187) Faa uma funo chamada concat_str que recebe duas strings como parmetros e copie todos os caracteres da segunda string para o final da primeira string. 188) Faa uma funo chamada compara_str que recebe duas strings (s1 e s2) como parmetros e compara os seus contedos. A funo retorna um nmero < 0 se s1 for menor que s2, um nmero > 0 se a s1 for maior que s2 e 0 (zero) se as strings forem iguais. 189) Faa uma funo chamada imp_str que recebe uma string como parmetro e imprime seu contedo na tela. Aps imprimir a string, a funo deve pular uma linha. 190) Faa uma funo chamada le_str que recebe uma string como parmetro e preenche esta string com os caracteres lidos atravs do teclado. A leitura termina quando o usurio digitar <Enter> (que no dever fazer parte da string). 191) Faa uma funo que receba uma string como parmetro e imprima a string invertida. 192) Faa uma funo que receba uma string como parmetro e converta todos as letras minsculas encontradas em letras maisculas. Os demais caracteres devem permanecer inalterados. 193) Faa uma funo que receba uma string como parmetro e retorne o nmero de palavras encontradas. Cada palavra pode estar separada por um ou mais caracteres de espao. No considere os caracteres de pontuao como separadores de palavras.

Exerccios Propostos
203) (Prova 3 - 94/1) Faa uma funo que receba como parmetro uma string de, no mximo, 80 caracteres e converta todas as letras para minsculas, exceto a primeira letra de cada palavra, que deve ser maiscula. Considere que a string s possui letras e espaos e entre as palavras existe um nico espao. Exemplo: Frase recebida: EsTa fRase e apENAS uM EXEmPLO Frase gerada: 19

Esta Frase E Apenas Um Exemplo 204) Faa uma funo que receba uma string como parmetro e imprima esta string em modo justificado, ou seja, preenchendo os intervalos entre as palavras com espaos em branco de maneira proporcional. Considere este procedimento apenas para strings com menos de 80 caracteres. As strings com mais de 80 caracteres devem ser impressas sem alterao. 205) Faa uma funo que receba uma string como parmetro e a imprima. Se a string tiver mais de 40 caracteres, ela deve ser particionada, quantas vezes for necessrio, de modo a imprimir no mximo 40 caracteres por linha, sendo que nenhuma palavra deve ser impressa fragmentada. 206) Modifique a funo do item anterior de modo a imprimir a string em modo justificado, alm de realizar o seu particionamento. 207) Faa uma funo que receba duas strings como parmetro (s1 e s2) e retorne a posio da string s2 dentro da string s1, caso a string s1 contenha a string s2, ou -1 em caso contrrio. Exemplo: s1 s2 c l a e m a o l \0 e o \0

inteiro:
a

2 string: apenas um 211) (Prova 4 - 96/1) Faa uma funo chamada strmix que receba 3 strings (s1, s2 e s3) e misture s1 e s2 do seguinte modo: 1o caracter de s3: 1o caracter de s1 2o caracter de s3: 1o caracter de s2 3o caracter de s3: 2o caracter de s1 e assim sucessivamente Observaes: a string resultante dever ser armazenada em s3. As strings s1 e s2 podem ter tamanhos diferentes. Exemplo: s1: abcde s2: 012 string resultante (s3): a0b1c2de 212) (Prova 3 - 96/2) Faa uma funo que receba duas strings e retire da primeira todo caracter que fizer parte da segunda string. Exemplo: 1a string: EFBACDEIEBBLBBD 2a string: EBD Resultado 1a string: FACIL 2a string: EBD 213) (Prova 3 - 97/1) Faa uma funo chamada compara() que receba duas strings e dois inteiros pos e qtd, onde pos a posio nas strings a partir da qual vamos comparar qtd caracteres. A comparao NO deve levar em conta se os caracteres so maisculos ou minsculos. A funo retorna 0 (zero) se as pores de strings forem iguais, seno, ela retorna -1. Dica: use uma funo que converta uma letra para maisculo. Considere que os valores de pos e qtd so sempre vlidos. Exemplo: string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 2 retorna 0 string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 3 retorna -1 214) (Prova 4 - 96/2) Faa uma funo chamada xxx() que receba duas strings como parmetros e retorne a posio da 2a string de trs para frente dentro da 1a string ou um nmero negativo caso no encontre. Faa um programa para testar se esta funo que voc fez est funcionando. Obs.: note que as strings podem ter qualquer tamanho!!! Exemplos: 20

A funo deve retornar o valor 4, pois o valor da posio onde comea a string leo na string camaleo. 208) Faa uma funo que receba uma string como parmetro e verifique se um palndrome, isto , da esquerda para direita ou da direita para a esquerda tm-se a mesma seqncia de caracteres. Exemplos: ama, ovo, asa. 209) (Prova 3 - 94/1) Considere a seguinte lista de pases e respectivas capitais: Canad Ottawa Inglaterra Londres Frana Paris Portugal Lisboa Japo Tquio Escreva um programa interativo que aceite um nome de um pas como entrada e imprima o nome de sua capital. O programa deve executar repetidamente at que seja digitada a palavra FIM. 210) (Prova 3 - 96/1) Faa uma funo que receba duas strings e um inteiro como parmetros. Esta funo inclui a segunda string a primeira a partir da posio indicada pelo inteiro. Exemplo (apenas um exemplo!!!): 1a string: isto exemplo resultado aps execuo da funo: 2a string: apenas um 1a string: isto apenas um exemplo

Exemplo 1 1a string: 2 string:


a

Exemplo 2 Esta uma linha uma -1542

Esta uma linha amu 7

resultado:

3. corresponde aos caracteres acentuados 4. exemplo: na posio de ndice (ndice e cdigo ASCII 234), temos armazenado o caracter e (cdigo ASCII 101) 217) (Prova 3 2000/2) Faa uma funo chamada abrevia que receba uma string contendo o nome de uma pessoa. A funo deve alterar a string, de modo a restar apenas a 1 a e a ltima palavra. Voc pode assumir que cada nome tem mais de 2 palavras e que entre duas palavras haver apenas um espao em branco. Exemplo: Antes: Depois: Joao Jose da Silva Santos Joao Santos

215) (Prova 4 - 97/1) Faa uma funo chamada cria_string() que recebe como parmetros uma string s1 (de tamanho suficiente), um formato fmt (tambm uma string) e um nmero inteiro positivo num (nesta ordem). Esta funo ir preencher a string s1 de acordo com o formato passado como parmetro e o valor do inteiro num. O formato ir conter uma seqncia de caracteres que devem ser integralmente copiados para a string s1, com exceo da seqncia %d. No seu lugar deve ser copiado o valor do inteiro num convertido para caracteres. Dica: lembre-se que o maior numero inteiro que pode ser representado no TC 32767 (5 dgitos). Exemplos: Exemplo 1 Parmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: O valor %d a resposta num: 15 Resultado aps a execuo da funo s1: O valor 15 a resposta fmt: (irrelevante) num: (irrelevante) Exemplo 2 Parmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: Converta o %d para caracteres num: 17430 Resultado aps a execuo da funo s1: Converta o 17430 para caracteres fmt: (irrelevante) num: (irrelevante) 216) (Prova 3 2000/1) A funo strcmp ( ) considera os caracteres A e diferentes em termos de ordenao alfabtica. O mesmo acontece para os demais caracteres acentuados. Faa uma funo chamada minha_compara_str ( ) que receba 2 strings (s1 e s2) e um vetor de caracteres de 256 posies, previamente preenchido. A funo deve retornar o mesmo valor que a funo strcmp ( ) mas funcionando tambm para caracteres acentuados. O contedo do vetor de caracteres o seguinte: posies 0 a 127 1. caracteres sem acentuao na sua posio correspondente 2. exemplo: na posio de ndice X, temos armazenado o caracter cujo cdigo ASCII X posies 128 a 255

218) (Prova Final 2000/2) Faa uma funo que receba os seguintes parmetros: uma string (frase), um vetor de strings (palavras), outro vetor de strings (abreviacoes) e um inteiro indicando o tamanho dos vetores de strings. A funo deve verificar se cada palavra da frase pode ser substituda por uma abreviao. Para isto, a funo deve comparar cada palavra encontrada na frase com o vetor de palavras. Se a palavra for encontrada no vetor palavras, ela dever ser substituda pela abreviao equivalente. Para auxiliar na construo de sua funo faa as seguintes funes: a) Pega_palavra: recebe uma string (S) e um valor inteiro (inicio) como parmetros. O parmetro inicio indica o ndice da string S onde comea a procura por uma nova palavra. A funo deve retornar o ndice de S onde termina a palavra. Cada palavra separada por um nico espao em branco. Voc pode assumir que na frase existem pelo menos duas palavras. b) Retira_palavra: recebe uma string (frase), dois inteiros (inicio e fim) e outra string (palavra). A funo deve preencher a string palavra com a palavra delimitada pelos inteiros inicio e fim, que est na string frase. c) Apaga_palavra: recebe uma string (frase) e dois inteiros (inicio e fim) como parmetros. A funo deve retirar da string os caracteres delimitados por inicio e fim (delimitam uma palavra), arrumando a string. d) Insere_palavra: recebe uma string (frase) como parmetro, um inteiro (pos) e outra string (abreviacao). e) Busca: recebe um vetor de strings (palavras), seu tamanho e uma string (S). A funo deve devolver 1 caso S no pertena ao vetor palavras ou o ndice (inteiro) onde S foi encontrada no vetor.

Tpico: arquivos
21

Exerccios de Fixao
219) Faa um programa que leia um arquivo binrio. O arquivo contm linhas de texto de at 80 caracteres. O nome do arquivo deve ser perguntado (sem extenso) e a extenso txt. O programa deve converter todas as letras minsculas encontradas para letras maisculas. Os dados convertidos devem ser escritos em outro arquivo. O nome do arquivo de sada deve ser o mesmo do que foi perguntado com extenso out. 220) Faa um programa que leia do arquivo binrio matriz.bin os valores de uma matriz 10 x 10 de nmeros inteiros e imprima na tela a matriz e o resultado da soma de todos os seus valores. 221) Faa um programa que leia do arquivo binrio matriz.txt os valores de uma matriz 10 x 10 de nmeros inteiros e gere um arquivo chamado transp.bin, contendo a matriz transposta da que foi lida. 222) Faa um programa que leia da entrada uma seqncia de at 100 nomes. O usurio pode terminar a leitura com um nome vazio, ou seja, digitando <Enter> como primeiro caracter de um novo nome. Cada nome lido dever ter no mximo 40 caracteres. Armazene esta seqncia de nomes em um arquivo chamado nomes.bin. 223) Faa um programa que leia o arquivo nomes.bin, gerado por voc, ordene alfabeticamente a seqncia de nomes e os imprima na tela. 224) Faa um programa que leia da entrada o nome (40 caracteres) e a nota final (float) dos alunos de uma turma de LTP1. Cada turma tem no mximo 50 alunos. O programa deve armazenar os dados em um arquivo binrio chamado ltp1.bin. 225) Faa um programa que leia o arquivo "ltp1", criado por voc, e imprima a mdia dos alunos da turma e quantos alunos tiveram notas acima da mdia. 226) Faa um programa que leia um arquivo binrio texto.bin, contendo linhas de texto e imprima as linhas em ordem alfabtica. Considere que cada linha do texto no contm mais que 80 caracteres. 227) Faa um programa que leia os valores de duas matrizes inteiras 3x3 da entrada e armazene em um arquivo binrio chamado matriz o resultado da soma das duas matrizes. 228) Faa um programa que leia um nmero da entrada e a matriz contida no arquivo binrio matriz e imprima o resultado da multiplicao do nmero pelos elementos da matriz. 229) Faa um programa que leia da entrada um texto de no mximo 50 linhas. Cada linha ter no mximo 80 caracteres. O programa deve

armazenar este texto em um arquivo binrio chamado texto. 230) Faa um programa que leia da entrada um nome de arquivo. Este arquivo contm linhas de texto e deve ser impresso na tela em modo justificado. Considere que as linhas tero no mximo 80 caracteres. Obs.: Utilize a funo de justificar texto feita por voc em exerccio anterior. 231) Faa um programa que leia, de um arquivo binrio (3a.bin), um conjunto de, no mximo, 20 nmeros inteiros e grave outro arquivo binrio (3b.bin) com os mesmos nmeros na ordem inversa. 232) Faa um programa que leia um arquivo binrio (4a.txt) com nomes (de at 30 caracteres) e idades e grave um arquivo (4b.txt) com os dados daqueles cujos nomes comecem por A. 233) Faa um programa que leia dois nmeros inteiros e uma matriz, tambm de inteiros, de no mximo 30x30, todos eles de um arquivo binrio (6a.bin). Os nmeros so a quantidade de linhas e de colunas, respectivamente. O programa deve gravar, em outro arquivo binrio (6b.bin), a soma das linhas dessa matriz. 234) Faa um programa que leia uma linha de at 80 caracteres do teclado e gere um arquivo binrio (11a.bin) com os caracteres na seguinte seqncia: 1o, ltimo, 2o, penltimo, 3o, antepenltimo, ...

Exerccios Propostos
235) Faa um programa que gerencie uma agenda de telefones. O programa deve ser capaz de armazenar as informaes para at 100 pessoas. A agenda deve conter o nome e o telefone de cada pessoa, devendo ser possvel realizar as seguintes operaes: incluso de um novo telefone; alterao do nmero de um telefone j cadastrado; excluso de um telefone; impresso dos telefones cadastrados; ordenao por nome; consulta a partir do nome de uma pessoa; armazenamento dos dados em um arquivo e recuperao dos dados do arquivo. 236) (Prova 3 - 97/1) Faa um programa, utilizando as funes abaixo, que leia de um arquivo binrio chamado nomenota.bin, um conjunto de at 100 nomes de alunos, com at 50 caracteres, e suas respectivas mdias finais (nmeros reais). O programa dever permitir alterao nos nomes e nas notas dos alunos atravs de um menu com as opes: a) alterar nome, b) alterar mdia, c) terminar. Ao final, o programa dever guardar os dados no mesmo arquivo, no mesmo formato. a) faa uma funo chamada le_tudo() que leia as informaes do arquivo. Esta funo recebe um vetor de strings e um vetor de reais como parmetros (nesta ordem). A funo retorna a 22

quantidade de nomes lidos. Se deu erro de leitura, a funo retorna 0 (zero). b) faa uma funo chamada escreve_tudo() que escreva tudo no arquivo. Esta funo recebe um vetor de strings, um vetor de reais e o nmero de elementos a gravar como parmetros (nesta ordem). A funo no retorna valor algum. c) faa uma funo chamada busca() que realize uma busca em um vetor de strings. Esta funo recebe o vetor de strings, uma string a ser localizada e o nmero de elementos do vetor. A funo retorna a posio da string no vetor ou -1 caso no a encontre. d) faa uma funo chamada altera_nome() que realize a alterao do nome do aluno. Esta funo recebe o vetor de strings, uma string contendo o nome anterior, uma string com o nome corrigido e o nmero de elementos do vetor. A funo retorna -1 se no conseguir alterar o nome. Use a funo busca(). e) faa uma funo chamada altera_media() que realize a alterao da mdia de um aluno. Esta funo recebe o vetor de strings, o vetor de mdias, uma string contendo o nome do aluno, a nova mdia e o nmero de elementos dos vetores (o mesmo para ambos). A funo retorna -1 se no conseguir alterar a mdia. Use a funo busca(). Obs.: a) O programa dever avisar ao usurio sempre que no puder realizar as alteraes. b) O arquivo possui uma linha com nome, outra linha com nota, depois mais um nome e uma nota e assim por diante. c) No se esquea de fazer a funo main(). 237) (Prova 4 - 97/1) Voc foi contratado para desenvolver um programa de reserva de passagens para uma companhia area que faz vos para no mximo 10 cidades (destinos) diferentes. Com o objetivo de racionalizar as suas operaes, a companhia opera com no mximo 5 tipos de aeronaves diferentes. O programa a ser desenvolvido dever fazer o seguinte:

binrio arq_destino.dat uma cidade para a qual a companhia voa regularmente (um string com exatamente 3 caracteres) e o modelo da aeronave usado para esta rota (um string com exatamente 4 caracteres), carregando as informaes lidas do arquivo nos vetores passados como parmetros. A funo dever retornar quantos elementos foram lidos (o mesmo para ambos).

c) faa uma funo, chamada pesq_destino(), que


receba como parmetros um vetor de strings (tabela de destinos), um inteiro (tamanho da tabela de destinos), e um string (destino). A funo dever pesquisar na tabela de destinos o destino passado com parmetro, retornando a sua posio na tabela de destinos caso a pesquisa seja bem sucedida, ou o valor inteiro -1, caso contrrio.

d) faa uma funo, chamada pesq_aviao(), que


receba como parmetros um vetor de strings (tabela de aeronaves), um inteiro (tamanho da tabela de aeronaves), e um string (aeronave). A funo dever pesquisar na tabela de aeronaves a aeronave passada com parmetro, retornando a sua posio na tabela de aeronaves caso a pesquisa seja bem sucedida, ou o inteiro -1, caso contrrio.

e) faa a funo main() que dever ler


continuamente do teclado as cidades para as quais cada um dos usurios quer voar (string de 3 caracteres. Ex: RJO); uma string vazia indica o trmino do programa. Se a cidade para qual o usurio quiser voar no for atendida pela companhia (isto , no est no vetor de destino) envie uma mensagem adequada. Caso contrrio tente fazer uma reserva para o usurio no vo para a cidade solicitada. Neste caso voc dever verificar se ainda existem lugares vagos no vo, em funo da capacidade da aeronave empregada na rota desejada. Caso a reserva possa ser feita envia a mensagem Reserva Confirmada, caso contrrio envie a mensagem Vo Lotado. Dicas: a) lembre-se que avies diferentes mas de mesmo modelo podem atender a mais de um destino. b) crie um vetor de lugares vagos para cada destino. 238) (Prova 3 - 2000/1) Faa um programa que auxilie a gerncia do Hotel Kuase K. Indo. O programa dever imprimir um relatrio com o gasto total por apartamento (nmero do apartamento e gasto total). Para tal, o programa dever ler as informaes armazenadas em dois arquivos (binrios): arquivo CADASTRO.DAT formato do registro cdigo do produto: inteiro 23

a) faa uma funo, chamada le_aviao(), que


receba como parmetros um vetor de strings e um vetor de inteiros. Esta funo dever ler do arquivo binrio arq_aviao.dat o modelo da aeronave (um string com exatamente 4 caracteres) e a quantidade de assentos da mesma (inteiro), carregando as informaes lidas do arquivo nos vetores passados como parmetros. A funo dever retornar quantos elementos foram lidos (o mesmo para ambos).

b) faa uma funo, chamada le_destino(), que


receba como parmetros dois vetores de strings. Esta funo dever ler do arquivo

valor: float quantidade de registros: 100 arquivo GASTOS.BIN formato do registro: nmero do apartamento: inteiro cdigo do produto: inteiro quantidade de registros: desconhecida Repare que podem existir vrios registros para um mesmo apartamento no arquivo GASTOS.BIN. 239) (Prova 3 - 1991/1) A empresa Vinhos Nariz Vermelho Ltda possui 2 arquivos binrios: ARQINI.BIN contm o nmero do cheque (inteiro) e o seu valor (real); possui um registro para cada cheque emitido para os funcionrios da empresa; este arquivo gerado antes do pagamento dos funcionrios (dados da empresa); os registros esto ordenados por nmero de cheque. ARQFIM.BIN o formato do registro idntico ao primeiro arquivo (nmero do cheque e valor do cheque); este arquivo gerado aps o pagamento dos funcionrios com dados vindos do banco. Faa um programa que, para cada cheque pago pelo banco, confira se o valor confere com o valor original. De acordo com o resultado, o programa deve imprimir uma das 3 mensagens abaixo: Cheque XXX emitido e descontado para R$ 850.20 Cheque XXX emitido para R$ 620.40 e descontado para valor diferente Cheque XXX no emitido!!!!! Observaes: a empresa possui 8752 funcionrios. se voc achar necessrio fazer uma busca, faa-a binria!!!! 240) (Prova 3 2000/2) Faa um programa que auxilie na conferncia de declarao de imposto de renda de mdicos. Para isso, h um arquivo binrio com as declaraes de mdicos (no mximo 200), ordenado por CPF (com o seguinte registro): Nome do mdico CPF do mdico Nmero de clientes que atendeu Lista ordenada de CPF dos clientes atendidos (no mximo 100) A seguir, obtenha via teclado a seqncia de declaraes de pagamentos feitas por clientes com: Nome do cliente CPF do cliente CPF do mdico (terminada pelo nome de cliente == FIM) informando para cada declarao se coincide, ou no com a feita pelo mdico. Caso a declarao do cliente no coincida com a declarao do mdico, exiba o nome dos envolvidos.

Voc dever fazer: a) uma funo para busca binria; b) uma funo chamada carrega, que servir exclusivamente para ler os dados do arquivo preenchendo os vetores recebidos como parmetros (esta funo dever retornar a quantidade de mdicos existentes no arquivo)/ c) uma funo main, que dever, entre outras coisas, fazer a leitura do teclado e a impresso do relatrio desejado. 241) (Prova 4 2001/1) Um estacionamento precisa de um programa para controle de suas 50 vagas. O programa deve pedir as seguintes informaes para cada carro que passe na guarita de atendimento: tipo da operao (1 entrada no estacionamento, 2 sada do estacionamento, 3 - impresso ); placa do carro (7 caracteres). A entrada de dados termina com o valor 4 para o tipo da operao. Se o carro est entrando no estacionamento, o programa deve verificar se h vagas e, em caso afirmativo, armazenar a placa do carro. Caso no haja vagas, o programa deve exibir uma mensagem adequada. Quando o carro est saindo do estacionamento, deve ser impresso o valor a ser pago. O estacionamento possui dois preos. Para clientes normais, o preo R$ 2,00; para clientes especiais, R$ 1,50. Inicialmente, o programa dever ler (via teclado) as placas dos carros dos clientes especiais (cada placa possui 7 caracteres). Sabe-se que existem 200 clientes especiais. A opo de impresso resume-se em imprimir um relatrio com as placas dos carros que esto no estacionamento naquele momento. Nesta opo, no deve ser lida nenhuma placa. O seu programa deve utilizar as seguintes funes (feitas por voc): a) funo le_clientes_especiais ( ): recebe um vetor de strings; l as placas referentes aos clientes especiais e as armazena no vetor; b) funo busca ( ): recebe como parmetros um vetor de strings, uma string e o nmero de elementos no vetor; a funo deve retornar o ndice onde encontrou a string no vetor de strings ou 1 caso a string no aparea no vetor. Dica: lembre-se de remover as informaes do carro quando este sair do estacionamento. 242) A empresa responsvel pelo Metro resolveu instalar, em algumas estaes, quiosques computadorizados com informaes para os usurios.

24

A empresa encomendou para voc um programa capaz de informar as estaes pertencentes a um trajeto, dadas a estao de origem e a estao destino. O seu programa dever ler as informaes sobre as estaes que esto armazenadas em um arquivo binrio chamado estacoes.bin. Cada entrada deste arquivo possui o nome de uma estao e o nome da estao seguinte. Cada nome possui no mximo 30 caracteres. Faa um programa que leia o arquivo estacoes.bin e armazene suas informaes em dois vetores (estacao e proxima_estacao). O seu programa deve imprimir o nomes das estaes de um trajeto, dadas as estaes de origem e destino. O usurio ir informar as estaes de origem e destino via teclado. Exemplo: Estao Prxima Carioca Cinelndia Gloria Largo do Machado Cinelndia Gloria Catete Flamengo Largo do Machado Catete Para o arquivo exemplo acima, se o usurio entrasse com a estao Cinelndia como origem e a estao Catete como seu destino, o programa deveria imprimir: Cinelndia Gloria Largo do Machado Catete 243) (Prova Final 2000/2) O gerente da Farmcia Boa Droga deseja controlar os prazos de validade dos seus medicamentos. A farmcia no trabalha com no mais que 2785 medicamentos. Faa um programa que leia o arquivo binrio prazos.in, que contm o cdigo (inteiro) e o prazo de validade (dois inteiros representando ms e ano) de cada medicamento do estoque e gere na tela um relatrio com os cdigos dos medicamentos que estiverem vencidos. O programa dever gravar tambm os cdigos dos medicamentos vencidos no arquivo vencidos.out. O programa deve ler da entrada dois inteiros representando o ms e o ano atuais, de modo a conseguir verificar a validade dos medicamentos. Registro do arquivo prazos.in Cdigo do Prazo de Medicamento Validade (Ms) (Int) (Int) Prazo de Validade (Ano) (Int)

Cdigo: 222 Validade: Cdigo: 555 Validade: Cdigo: 888 Validade: Cdigo: 999 Validade: Cdigo: 444 Validade: Medicamentos vencidos: Cdigo: 222 Cdigo: 555 Cdigo: 444 O seu programa deve funes:

05 1998 12 1954 08 2000 09 2001 02 2000

conter as seguintes

a) Le_arquivo: recebe trs vetores de inteiros como parmetros (codigo, mes, ano). A funo deve ler o arquivo prazos.in e preencher os vetores. A funo devolve o nmero de medicamentos efetivamente lidos do arquivo. b) Confere_data: recebe a data de vencimento (ms e ano - inteiros) e a data atual (ms e ano - inteiros) como parmetros. A funo deve retornar 1 se o medicamento estiver fora da validade e 0 em caso contrrio.

Registro do arquivo vencidos.out Cdigo do Medicamento (int) Exemplo: 25

Anda mungkin juga menyukai