Você está na página 1de 32

Linguagem de Programao C

Lista de Exerccios

Variveis, entrada e sada


Exerccios de Fixao
1) Faa um programa que imprima o produto entre 35 e 47. 2) Faa um programa que imprima a mdia aritmtica entre os nmeros 12, 25 e 53. 3) Faa um programa que leia 2 nmeros da entrada e imprima o seu produto. 4) Faa um programa que leia 2 nmeros da entrada e imprima a sua mdia aritmtica. 5) Faa um programa que leia 2 nmeros da entrada e imprima o resto da diviso inteira de um pelo outro. 6) Faa um programa que leia um nmero da entrada e imprima o seu antecedente e o seu sucessor. 7) Faa um programa que leia um valor de conta de restaurante, representando o gasto realizado pelo cliente e imprima o valor total a ser pago, considerando que o restaurante cobra 10% para o garom. 8) Faa um programa que leia um valor de hora e informe quantos minutos se passaram deste o incio do dia.

11) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo se so iguais ou diferentes. 12) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo o maior deles. Suponha que os nmeros sero diferentes. 13) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo o maior deles. Detalhe: se os nmeros forem iguais, imprima uma mensagem avisando ao usurio. 14) Faa um programa que leia 2 nmeros e os imprima em ordem crescente. 15) Faa um programa que leia 2 nmeros e os imprima em ordem decrescente. 16) Faa um programa que leia 3 nmeros e imprima o menor deles. 17) Faa um programa que leia 3 nmeros e os imprima em ordem crescente. 18) Faa um programa que leia 3 nmeros e os imprima em ordem decrescente. 19) Faa um programa que leia 3 nmeros e imprima o valor intermedirio, entre o menor e o maior nmero. Suponha que os nmeros sero diferentes. 20) Faa um programa que leia 3 nmeros e imprima uma das seguintes mensagens: todos os nmeros so iguais; todos os nmeros so diferentes ou apenas dois nmeros so iguais. 21) Faa um programa que leia trs notas 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); Pgina 1 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Tomada de deciso
Exerccios de Fixao
9) Faa um programa que leia da entrada um nmero e imprima o seu valor absoluto (sem o sinal). 10) Faa um programa que leia um nmero e imprima uma mensagem dizendo se par ou impar.

Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
reprovado (mdia < 3) e prova final ( 3 mdia < 7). 22) Faa um programa que leia a idade de uma pessoa e informe sua classe eleitoral: no eleitor (abaixo de 16 anos); eleitor obrigatrio (entre 18 e 65 anos) e eleitor facultativo (entre 16 e 18 anos e acima dos 65 anos). 23) Faa um programa que leia um horrio no sistema de 24 horas e imprima este horrio no sistema de 12 horas. Exemplo: 22:32 10:32 pm Obs.: 0:00 12:00 am 6:00 6:00 am 12:00 12:00 pm nmeros naturais de 0 at limite pulando de incr. Suponha que limite e incr so maiores que zero. Exemplo: valores lidos: 10 (limite) 3 (incr) impresso: 0 3 6 9 32) Faa um programa que leia um nmero da entrada e imprima os nmeros mpares menores do que este nmero. Exemplo: valor lido: 7 impresso: 1 3 5 33) Faa um programa que leia um nmero da entrada (num) e imprima os num primeiros nmeros pares. Exemplo: valor lido: 6 impresso: 2 4 6 8 10 12 34) Faa um programa que imprima a tabuada de 5 no formato: 5x1=5 5 x 2 = 10

Repetio
Exerccios de Fixao
24) Faa um programa que imprima os nmeros de 1 a 100. 25) Faa um programa que imprima os nmeros de 100 a 1, nesta ordem. 26) Faa um programa que imprima os nmeros pares no intervalo de 1 a 300. 27) Faa um programa que imprima os nmeros de 64 a 256. 28) Faa um programa que imprima os nmeros mpares no intervalo de 531 a 750. 29) Faa um programa que leia um nmero da entrada e imprima os nmeros naturais de 0 at este nmero. Suponha que o nmero lido da entrada ser maior que zero. 30) Faa um programa que leia um nmero da entrada e imprima os nmeros naturais de 0 at este nmero, pulando de dois em dois. Suponha que o nmero lido da entrada ser maior que zero. 31) Faa um programa que leia um nmero da entrada (limite ), um incremento (incr) e imprima os

... ... ...


5 x 10 = 50 35) Faa um programa que leia um nmero da entrada e imprima a tabuada deste nmero. Suponha que o nmero lido da entrada maior que zero. 36) Faa um programa que imprima as tabuadas dos nmeros de 1 a 10. 37) Faa um programa que imprima os nmeros de 1 a 100 e o valor de seu somatrio. 38) Faa um programa que leia um nmero da entrada (num), imprima os nmeros de 1 a num e o seu somatrio. 39) Faa um programa que imprima a soma dos nmeros pares entre 25 e 100. 40) Faa um programa que leia um nmero da entrada (num) e imprima a soma dos nmeros pares entre 1 e num. Suponha que num ser maior que zero. 41) Faa um programa que leia um nmero da entrada (num) e imprima o somatrio dos num primeiros nmeros mpares. Pgina 2 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
42) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os nmeros naturais neste intervalo. Exemplo: valores lidos: 5 9 impresso: 5 6 7 8 9 43) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os mltiplos de 5 entre eles. Exemplo: valores lidos: 3 17 impresso: 5 10 15 Observao: o que acontece se fim for menor que incio ? Seu programa continua funcionando? 44) Faa um programa que leia um intervalo da entrada (incio e fim ) e um nmero (num). O programa deve imprimir os mltiplos de num entre incio e fim. Exemplo: valores lidos: 1 15 3 (num) impresso: 3 6 9 12 15 Observao: o que acontece se fim for menor que incio ? Seu programa continua funcionando? 45) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os nmeros pares entre incio e fim e seu somatrio. Exemplo: valores lidos: 3 15 impresso: 4 6 8 10 12 14 Soma = 54 46) Faa um programa que leia um nmero (num) da entrada e imprima os mltiplos de 3 e 5 ao mesmo tempo no intervalo de 1 a num. Exemplo: valor lido: 47 impresso: 15 30 45 47) Faa um programa que leia um nmero da entrada, calcule e imprima o seu fatorial. Lembre-se que: n! = n x (n -1) x (n - 2) x ... x 1 0! = 1 e 1! = 1 49) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior deles. Suponha que todos os nmeros lidos sero positivos. Exemplo: valores lidos: 3 17 4 22 impresso: O maior nmero lido foi 22. 50) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior deles. Exemplo: valores lidos: 4 -3 -5 -15 -4 impresso: O maior nmero lido foi -3. 51) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior, o menor e soma dos nmeros lidos. 52) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima o maior, o menor e a mdia aritmtica dos nmeros. O nmero 0 (zero) no faz parte da seqncia. Exemplo: valores lidos: impresso: 20 -3 4 - 7 1 0 Maior = 20 Menor = -7 Mdia = 3

53) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima o nmero que for mltiplo de sua posio na seqncia. valores lidos: 3 7 8 16 5 0 posio: 1 2 3 4 5 impresso: 3 16 5 54) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima a mdia aritmtica dos mpares e a soma dos pares. 55) Faa um programa que calcule e imprima o valor de 25. Dica: 2 5 = 2 x 2 x 2 x 2 x 2.

56) Faa um programa que leia dois nmeros da 48) Faa um programa que leia um nmero da entrada (X e Y) e calcule XY . Suponha que X e Y so entrada (num), a seguir leia num nmeros da entrada positivos. e os imprima. Exemplo: 57) Faa um programa que calcule o produto de 2 valores lidos: 5 nmeros lidos da entrada (num1 e num2 ) atravs do 3 10 12 2 1 impresso: 3 10 12 2 1 Lembre-se sempre Pgina 3 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
mtodo de somas sucessivas. Suponha que num1 e num2 so positivos. Exemplo: valores lidos: impresso: dica: 3 4 12 3 x 4 = 3 + 3 + 3 + 3 = 12 67) Faa um programa que calcule K so lidos da entrada. 68) (Prova 1 - 96/1) Faa um programa que imprima a tabela de converso de graus Celsius-Fahrenheit 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 = 5(F - 32) /9 Exemplo: valores lidos: 68 50 15 impresso: Fahrenheit Celsius 68 20 53 11

I , onde N e
I= N

58) Faa um programa que leia 2 nmeros da entrada e imprima o resto da diviso inteira do primeiro pelo segundo usando subtraes sucessivas. 59) Faa um programa que calcule o resultado de
num1 num2

utilizando

algoritmo

de

subtraes

sucessivas. num1 e num2 devem ser lidos da entrada. Informe ao usurio caso a diviso no seja exata. Exemplo: valores lidos: 6 3 impresso: 2 dica: 6-3 =3-3=0 (2 subtraes) 60) Faa um programa que imprima os termos de uma P.A., sendo lidos da entrada: o primeiro termo (a 0), a razo (r) e o nmero de elementos (num). 61) Faa um programa que imprima os termos de uma P.G., sendo lidos da entrada: o primeiro termo (a 0), a razo (q ) e o nmero de elementos (num). 62) Faa um programa que leia um nmero da entrada e imprima uma mensagem dizendo se o nmero soluo da equao 2x2 - 7x + 3 = 0 . 63) Escreva um algoritmo que leia uma seqncia de 50 nmeros naturais e imprima o maior nmero da seqncia mltiplo de 2 e de 3 ao mesmo tempo. 64) Faa um programa que imprima os 10 primeiros termos da srie de Fibonacci. Observao: a 0 = 1, a 1 = 1 e a n = a n - 1 + a n - 2. 65) Faa um programa que leia um nmero (num) da entrada e imprima os num primeiros termos da srie de Fibonacci. 66) Faa um programa que leia um nmero da entrada e imprima os termos da srie de Fibonacci menores que este valor.

Exerccios Propostos
69) (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 gerados como a soma dos dois termos anteriores, ou seja, ai=ai-1+ai-2 para i3. 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. 70) (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: a i = ai -1 + a i -2 ==> para i mpar a i = ai -1 - ai -2 ==> para i par Escreva 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. 71) (Prova 1 - 96/2) Uma telenovela de grande sucesso tem o seu final previsto para o dia 1 o de novembro. Sabe-se que neste dia ser revelado nome do personagem responsvel por inmeros assassinatos ocorridos no decorrer da trama. No entanto, no dia 1o de outubro (um ms antes do Pgina 4 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
trmino da novela), um funcionrio da emissora conta para dois amigos o desfecho do ltimo captulo. Com isto, no dia 1o de outubro, 3 pessoas sabem do desfecho da novela. Supondo que cada nova pessoa a saber do final da novela contar para duas novas pessoas no dia seguinte (e para mais ningum), mais 4 pessoas estaro envolvidas ao final do dia 2 de outubro (7 pessoas at este dia). No dia 3 de outubro, j sero 15 pessoas. Faa um programa para ajudar o dono da emissora a decidir se deve demitir o funcionrio fofoqueiro: se ao trmino do dia 25 de outubro mais de 20000 (vinte mil) pessoas estiverem sabendo do final da novela, o funcionrio dever ser demitido. 72) Faa um programa que calcule o M.M.C entre dois nmeros lidos da entrada. 73) Faa um programa que calcule o M.D.C entre dois nmeros lidos da entrada. 74) Faa um programa que calcule e imprima os termos da srie entrada. 75) Faa um programa que calcule o resultado de
I= N

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: 5 3 18 7 22 50 impresso: 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 intervalo, soma = 10 e mdia = 5 3 valores fora do intervalo, soma = 90 e mdia = 30 78) Repare a seguinte caracterstica do nmero 3025: 30 + 25 = 55 e 552 = 3025 Faa um programa que leia uma srie de valores (nmeros inteiros de 4 algoritmos, um de cada vez) e diga se possuem a mesma caracterstica (repare que 3025 / 100 = 30 c/ resto 25). O programa termina quando for lido um valor menor que 1000 ou maior que 9999. 79) 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 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

XN , onde X e N devem ser lidos da N!

(1) I , onde N lido da entrada.


I

76) Escrever um algoritmo para escrever na sada todos os nmeros (inteiros e positivos) entre 10 e 100 tais que: No terminem em zero; Se o dgito da direita for removido, o nmero restante divisor do nmero original. Exemplos: 39: 3 divisor de 39 48: 4 divisor de 48

A raiz de 16 4. 80) Faa um programa que leia um conjunto de pedidos de compra e calcule o valor total da compra. Cada pedido composto pelos seguintes campos:

77) Dados N valores (inteiros e positivos) na entrada, escrever um algoritmo que teste quais nmero do pedido; valores esto dentro e quais esto fora do intervalo data do pedido (dia, ms, ano); {1, 2, ..., 15}, escrevendo na sada o valor e a preo unitrio do item e mensagem correspondente. O primeiro valor a ser quantidade. lido na entrada N e N no um d os valores a O programa dever processar novos pedidos serem testados. Alm disso, obter: Lembre-se sempre Pgina 5 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
at que o usurio digite 0 (zero) como nmero do pedido. 81) Refaa o exerccio anterior, sendo que s sero processados os pedidos cujo valor seja maior que R$ 1000,00. 82) 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. 83) 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. 84) 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 % 85) 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). 86) 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 salrio < 1000,00 1000,00 <= salrio < 10000,00 10000,00 <= salrio < 25000,00 salrio >= 25000,00 Imposto 0 10 % 15 % 20 %

87) 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. 88) 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: Pgina 6 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
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 91) 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. 92) 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. 93) A TELERJ deseja calcular as contas telefnicas de seus assinantes atravs do computador. A cobrana de seus servios feita da seguinte maneira: 1. Tarifa bsica telefone residencial (cdigo 1): R$ 7,00 telefone comercial (cdigo 2): R$ 20,00 2. Servio local: R$ 12,00 por pulso excedente (acima de 90 pulsos) 3. 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 Pgina 7 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

... ... ... ...


Cdigo da disciplina: 1085 Cdigo da turma: 4 Mdia Final: 3 89) 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 a mdia aritmtica de suas notas. 90) 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.

Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
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. 94) 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. 95) Faa um programa que implemente o jogo da senha (para 2 pessoas): a) o jogador 1 digita uma senha (valor inteiro entre 0 e 100) sem o conhecimento do jogador 2 b) o jogador 2 tem 5 chances para descobrir a senha c) a cada tentativa do jogador 2, o programa deve avisar se o valor digitado maior, menor ou igual a senha d) se o jogador 2 acertar a senha, o programa no deve pedir mais nenhuma tentativa
senha 43 e valor digitado 44 b) ao final do jogo, se for o caso, enviar a mensagem Voc perdeu. Tente novamente depois c) no permita que o jogador 1 digite valores fora da faixa esperada (entre 0 e 100) d) ao final de uma partida, permita ao usurio jogar novamente

97) (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. 98) 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). 99) (Prova 1 - 96/2) Faa um programa que calcule o imposto de renda de um grupo de contribuintes, considerando que: a) os dados de cada contribuinte (CIC, nmero de dependentes e renda bruta anual) sero fornecidos pelo usurio via teclado; b) para cada contribuinte ser feito um abatimento de R$ 600 por dependente; c) a renda lquida obtida diminuindo-se o abatimento com os dependentes da renda bruta anual; d) para saber quanto o contribuinte deve pagar de imposto, utiliza-se a tabela abaixo: RENDA LQUIDA IMPOSTO at R$ 1000 0% (isento) Pgina 8 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

96) Faa as seguintes alteraes no jogo da senha (uma de cada vez): a) 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 Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
de R$ 1001 a R$ 5000 acima de R$ 5000 15% 25% e) o valor de CIC igual a zero indica final de dados; f) o programa dever imprimir, para cada contribuinte, o nmero do CIC e o imposto a ser pago; g) ao final, o programa dever imprimir o total do imposto arrecadado pela Receita Federal e o nmero de contribuintes isentos; h) leve em considerao o fato do primeiro CIC informado poder ser zero. 100) (Prova 1 - 96/1) Responda as questes abaixo, baseado no algoritmo:
#include <stdio.h> void main (void) { int x, w, y, z; scanf (%d%d%d%d, &w, &x, &y, &z); if (w>=x) { while (y>0) { y = y - 1; if (y>w) { printf (local 1); while (z<11) { z = z + 3; if (z>x) z = 15; printf (local 2); } } printf (local 3); } } printf (local 4); while (w>x) { w = w - 5; printf (local 5); } }

b) 7, 2, 4, 0 c) 3, 3, 5, 0 d) -1, -3, 4, 0 101) (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 102) (Prova 2 - 94/1) Sabe-se que o produto de dois nmeros inteiros pode ser obtido atravs de sucessivas multiplicaes (por 2), divises (por 2) e somas. Enquanto um dos nmeros dividido por 2, o outro multiplicado por 2. Quando o resultado da diviso for mpar, o outro nmero correspondente (resultado da multiplicao) acumulado; caso contrrio, passa-se para a prxima multiplicao e diviso. Quando o resultado da diviso for 0 (zero), o valor acumulado corresponder ao resultado final. Exemplo: Primeiro Segundo Valor nmero nmero acumulado 37 mpar 41 41 37:2=18 par 41x2=82 41 18:2=9 mpar 82x2=164 41+164=205 9:2=4 par 164x2=328 205 4:2=2 par 328x2=656 205 2:2=1 mpar 656x2=1312 205+1312=1517 1:2=0 fim Resultado = 1517 a) Faa uma funo que receba como parmetros 3 nmeros inteiros e retorne a soma do segundo com o terceiro, caso o primeiro seja mpar; seno, retorna o terceiro. b) Usando a funo do item a ), faa um programa que leia dois nmeros inteiros e calcule seu produto atravs do mtodo especificado. Pgina 9 de 32 Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Escreva exatamente o que ser impresso pelo algoritmo acima para cada entrada abaixo: a) 2, 4, -15, -3 Lembre-se sempre A Sorte Ajuda aos Competentes

Linguagem de Programao C
103) (Prova 1 - 97/1) Faa um programa em C 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 =

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

notas
numero _ de _ alunos

...

var iancia =

(notas

numero _ de _ alunos

media 2

Observar que (notas2) (notas)2 !!!!!!!! 104) (Prova 2 - 94/2) Devido s confuses dos programadores do TRE, a Justia Eleitoral resolveu contrat-lo para realizar a apurao das eleies. Faa um programa que leia o cdigo dos candidatos e informe o nmero de votos recebidos por cada um, bem como o candidato mais votado. Voc sabe que 100 candidatos disputam uma vaga. E que a entrada termina assim que for lido um candidato de cdigo negativo. Exemplo: Entrada: 0 0 1 2 2 -1 Sada: 0 3 votos 1 1 voto 2 2 votos O candidato 0 foi eleito. 105) (Prova 2 - 96/1) Faa um programa em linguagem C 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. O valor da integral indica a rea sob a curva, entre duas coordenadas X. Por exemplo, seja o grfico a seguir:

106) (Prova 1 - 97/1) Faa um programa em C 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 e se a quantidade de sacos do pedido no ultrapassar 10% (dez por cento) do total de sacos disponveis no estoque. 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. Se o pedido for rejeitado, as mensagens Estoque insuficiente ou Ultrapassado o mximo permitido devero ser exibidas no vdeo, conforme o motivo da rejeio do pedido. 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.

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Pgina 10 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
107) (Prova 1 - 97/1) Faa um programa em C 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 C rdito, D bito 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.

Pplaneta =

PTerra * g planeta 10

110) Faa um programa que , dada a idade de um nadador, classifique-o em uma das seguintes categorias: Categoria Infantil A Infantil B Juvenil A Juvenil B Senior Idade 5 a 7 anos 8 a 10 anos 11 a 13 anos 14 a 17 anos maiores de 18 anos

111) Em uma eleio presidencial, existem quatro candidatos. Os votos so informados atravs de cdigo. Os dados utilizados para a escrutinagem obedecem seguinte codificao: 1, 2, 3, 4 = voto para os respectivos candidatos; 5 = voto nulo; 6 = voto em branco; Elabore um programa que calcule e imprima: total de votos para cada candidato; total de votos nulos; total de votos em branco; percentual dos votos em branco e nulos sobre o total; situao do candidato vencedor sobre os outros dois, no caso, se ele obteve ou no mais votos que os outros dois somados. Como finalizador do conjunto de votos, tem-se o valor 0. 112) Faa um programa que calcula a rea de determinadas figuras geomtricas. O programa dever apresentar um menu com as seguintes opes: 1. 2. 3. 4. quadrado ( lado 2 ) retngulo (comprimento * largura) crculo (3,14 * raio 2 ) trapzio ((base maior + base menor) * altura / 2)

Seleo mltipla
Exerccios de Fixao
108) 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). 109) Escreva um programa que leia um peso na Terra e o nmero de um planeta e imprima o valor do seu peso neste planeta. A relao de planetas e dada a seguir juntamente com o valor das gravidades relativas em relao Terra. # Gravidade relativa Planeta 1 0,37 Mercrio 2 0,88 Vnus 3 0,38 Marte 4 2,64 Jpiter 5 1,15 Saturno 6 1,17 Urano Para calcular o peso no planeta use a frmula:

De acordo com a opo, o programa deve pedir os Lembre-se sempre Pgina 11 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
valores necessrios para realizar o clculo. Utilize o comando switch. 113) Faa o chins do programa abaixo, mostrando exatamente o que seria impresso se fossem digitados os seguintes caracteres na entrada: EVA e ADAO#
#include <stdio.h> 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); }

classe 1 2 3 4 5 6 7

nvel excelente bom mdio regular precisa treinar mais te cuida tsktsk

valor adicional +100% +80% +50% +30% +10% +5% nada

Faa um programa que, dados o salrio e o cdigo da classe de um jogador, calcule e imprima o seu salrio final e o nome da sua classe (nvel). 115) (Prova 3 - 96/1 Um aluno de LTP1 escreveu esta funo em uma das listas. Ajude o professor a corrigir (como voc gostaria que eu corrigisse a sua prova) apontando os sete erros. Esta funo implementa uma calculadora, retornando -1 se a operao no puder ser realizada ou 0 (zero) em caso contrrio. O resultado da operao ser armazenado em *op1. Rescreva corretamente apenas as linhas erradas, identificando-as pelo seu nmero.
1. void calc (float op1, float op2, 2. char *operador) 3. { 4. int aux; 5. while (operador) 6. { 7. case +: 8. *op1 = *op1 + op2; 9. break; 10. case -: 11. *op1 = *op1 - op2; 12. break; 13. case *: 14. *op1 = *op1 * op2; 15. break; 16. case /: 17. if (*op2 != 0) 18. *op1 = *op1 / op2; 19. else 20. aux = -1; 21. return aux; 22. } 23.}

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:

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Pgina 12 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
Caracteres
Exerccios de Fixao
116) Faa um programa que imprima as letras minsculas do alfabeto e seus respectivos cdigos decimais da tabela ASCII. 117) Faa um programa que leia uma seqncia de caracteres terminada por # e imprima o nmero de caracteres lidos. 118) Faa um programa que l eia uma seqncia de caracteres terminada por um <Enter> (linha de texto) e imprima a quantidade de caracteres lidos. 119) Faa um programa que leia uma seqncia de caracteres terminada por um <Enter> (linha de texto) e os imprima novamente na tela com exceo dos caracteres de espao em branco que no devem ser impressos. 120) Faa um programa que leia uma seqncia de caracteres terminada por um <Enter> (linha de texto) e imprima a quantidade de vogais, a quantidade de consoantes e a quantidade de caracteres no letras encontrados. Considere apenas as letras minsculas. 121) Faa um programa que leia uma seqncia de caracteres terminada por um <Enter> (linha de texto) e imprima a quantidade total de caracteres lidos e a porcentagem de caracteres do tipo letra encontrados. 122) Faa um programa que leia uma linha de texto da entrada e imprima o nmero de letras maisculas e o nmero de letras minsculas encontradas. 123) 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 da entrada e imprima os caracteres codificados POLAR/ZENIT. segundo o cdigo 124) 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. 125) 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. 126) Faa um programa que leia uma seqncia de linhas de texto (um texto) terminada com uma linha vazia e imprima a quantidade total de caracteres lidos. 127) Faa um programa que leia uma seqncia de linhas de texto terminada com uma linha vazia e imprima a quantidade de caracteres da maior linha do texto. 128) Faa um programa que leia uma seqncia de linhas de texto terminada com uma linha vazia e imprima a quantidade mdia de caracteres encontrados em cada linha. 129) Faa um programa que procure por um determinado caracter em um texto (conjunto de linhas), lido da entrada, indicando os nmeros das linhas em que o caracter aparecer e tambm a respectiva posio em cada linha (em nmero de caracteres). O caracter pode aparecer mais de uma vez em uma linha. 130) Faa um programa que leia uma seqncia de linhas de texto e imprima os caracteres lidos novamente na tela com exceo dos caracteres de espao em branco, que no devem ser impressos. 131) Faa um programa que leia um texto (conjunto de linhas) e imprima a quantidade de vogais, a quantidade de consoantes e a quantidade de caracteres no letras encontrados. Considere apenas as letras minsculas.

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Pgina 13 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
132) Faa um programa que leia um texto da entrada e converta os caracteres maisculos em minsculos. 133) Faa um programa que leia um texto da entrada e converta os caracteres maisculos para minsculos e vice-versa. 134) Faa um programa que leia trs caracteres numricos (0 a 9) da entrada e imprima o nmero inteiro correspondente usando printf com formato %d . Lembre-se que voc deve compor o nmero, o primeiro caracter ser a centena, o segundo a dezena e o terceiro a unidade. 135) Faa um programa que leia um texto da entrada e imprima o nmero de palavras encontradas no texto. nmero de vezes que o caractere se repete e o caractere a ser repetido. Exemplo : texto compactado: texto descompactado: x@3ux@5a xuuuxaaaaa

139) (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 espao; o texto comea por uma letra; no existem sinais de pontuao consecutivos. 140) (Prova 3 - 96/2) O programa abaixo funciona como esperado? Justifique sua resposta.
#include <stdio.h> #include <conio.h> void main (void) { int i; char nome[10]; for (i = 0; i < 10; i++) nome[i] = getche (); puts (nome); }

Exerccios Propostos
136) Faa um programa que calcule o resultado de uma expresso aritmtica lida da entrada. A expresso ter um nmero indetermin ado de termos envolvendo as operaes de soma, subtrao, diviso e multiplicao. No leve em considerao a precedncia dos operadores. proibido o uso da funo scanf para a leitura dos operadores e operandos. Exemplo: 10 + 5 * 2 = 30 137) Faa um programa em C que leia quatro caracteres da entrada padro (representado um nmero na base 16) e um caracter representando um sinal e imprima o valor numrico decimal correspondente. O caracter que representa o sinal (+ ou -) pode aparecer em qualquer parte do nmero. Os demais caracteres sero dgitos (0, 1, 2, ..., 9) ou letras maisculas (A, B, C, D, E, F). Para facilitar assuma que o usurio ir digitar exatamente o que o programa espera ler.

Exemplo: 110-B 4363


138) (Prova 4 - 96/1) Faa um programa que leia uma linha (terminada por <Enter>) com um texto compactado e a imprima de forma descompactada. Ao aparecer no texto o caractere @, significa que os dois caracteres seguintes so, respectivamente, o

141) (Prova 1 - 97/1) Faa um programa em C 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: apenas um exemplo!!!!!!! Impresso: apeenaaas uuuum eeeeexeeeeeemplooooooo!!!!!!! Percentual: 33.333333 Pgina 14 de

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
142) (Prova 4 - 96/2) Faa um programa que compacte um texto lido segundo o seguinte algoritmo: a) se houver de 3 a 9 caracteres repetidos, o programa dever imprimir o caracter @ seguido do nmero de caracteres repetidos e do caracter repetido, b) se no houver mais do que trs repeties, o prprio caracter dever ser impresso tantas vezes quanto ele apareceu, c) se houver mais do que 9 repeties, o programa dever imprimir seqncias semelhantes a do item a at totalizar o nmero de repeties necessrias (ver exemplo da letra k). Exemplo: Entrada de dados: abcccdeeeee fghhhhhhhhhh ijkkkkkkkkkkkkkkklm Sada de dados: ab@3cd@5e fg@9hh ij@9k@6klm 143) a) Faa uma funo que leia um valor, em algarismos romanos (considere vlidos apenas os algarismos I, V e X), e o converta para seu nmero decimal correspondente, devolvendo o valor calculado. O nmero em romanos ser lido como uma seqncia de caracteres terminada com um <Enter>. b) Faa uma funo que receba 2 valores decimais e um operador (+, -, *, /) e calcule o resultado da operao. c) Faa um programa, utilizando as funes dos itens anteriores, que leia 2 (dois) nmeros em algarismos romanos e um operador (+, -, *, /) e calcule o resultado da operao. a) receba um inteiro (de um dgito) como parmetro e retorne o caractere correspondente. b) receba um caractere como parmetro e retorne o seu correspondente em maisculo (se minsculo) ou o prprio caractere. c) receba um caractere como parmetro e retorne o seu correspondente em minsculo (se maisculo) ou o prprio caractere. d) receba um caractere como parmetro e retorne o seu correspondente cdigo ASCII (inteiro). e) receba um caractere como parmetro e retorne verdadeiro (1) se for letra e falso (0), caso contrrio. f) receba um caractere como parmetro e retorne verdadeiro (1) se for dgito e falso (0), caso contrrio. g) receba um caractere como parmetro e retorne verdadeiro (1) se for espao e falso (0), caso contrrio. h) receba um caractere como parmetro e retorne verdadeiro (1) se for letra maiscula e falso (0), caso contrrio. i) receba um caractere como parmetro e retorne verdadeiro (1) se for letra minscula e falso (0), caso contrrio. j) retorne o resultado de um nmero elevado a outro (ambos recebidos como parmetros). k) retorne o resto da diviso inteira de um nmero por outro. 145) Faa uma funo que receba um caracter como parmetro e retorne 1 caso seja uma consoante e 0 em caso contrrio. 146) Faa uma funo que receba um caracter como parmetro e retorne 1 caso seja uma vogal e 0 em caso contrrio. 147) Faa uma funo que receba um nmero inteiro como parmetro e retorne seu valor absoluto. 148) Faa uma funo que receba um nmero inteiro como parmetro e retorne 1 se sua raiz quadrada exata e 0 em caso contrrio. A funo de retornar, atravs de um parmetro passado por referncia, o valor aproximado da raiz. Lembre-se sempre 32 A Sorte Ajuda aos Competentes Pgina 15 de

Funes
Exerccios de Fixao
144) Faa uma funo que:

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
149) Faa uma funo que receba um caracter como parmetro por referncia. Se o caracter for uma letra minscula, a funo deve convert-la para maiscula. A funo deve retorna 1 se o caracter for uma letra e 0 em caso contrrio. 150) Faa uma funo que receba um caracter como parmetro por referncia. Se o caracter for um digito, a funo deve convert-lo para o seu respectivo valor numrico. Lembre-se 0 caracter diferente de 0 numrico. A funo deve retorna 1 se o caracter for um dgito e 0 em caso contrrio.
}

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

151) (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 (10); g (x, &y); g (z, &v[4]); z = h (v[5], v); ... ... ... }

153) (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); }

152) (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 (); ... } ... ....

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]); }

Exerccios Propostos
154) Elabore uma funo que retorne o r everso de um nmero inteiro, por exemplo 932 239. Lembre-se sempre 32 A Sorte Ajuda aos Competentes Pgina 16 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
155) 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
r combinao a seguinte: C n =

decimal correspondente. obrigatrio o uso da funo anterior. Voc pode fazer esta questo mesmo que no tenha feito a anterior. c) Seja a funo main abaixo:
void main (void) { int a, b, c; a = le_converte(); b = le_converte(); c = a + b; printf ("\n%d", c); imprime_em_binario (c); }

n! . Leia r ! (n r ) !

os valores de n e r da entrada e use a funo do item anterior para calcular o resultado. 156) 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: 25678 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). 157) 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 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. 158) a) Faa uma funo (chamada conv) que leia um dgito (caractere) e retorne o valor numrico correspondente. b) Faa uma funo (chamada le_converte ) que leia 5 dgitos (caracteres), representando uma seqncia de bits, e retorne o valor numrico

Faa a funo imprime_em_binario. 159) (Prova 2 - 96/1) Crie as funes necessrias ao funcionamento correto do programa abaixo. No permitido:

alterar a funo main(); usar printf(); usar scanf().

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Pgina 17 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
void main (void) { int x, y, z; int n; scanf (%d, &n); x = funcao_q_le (n); y = funcao_q_le (n); z = x + y; funcao_q_escreve (z, n+1); }

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).
y Obs: use a funo pow(x,y) para calcular x , onde x e y so do tipo float. Lembre-se de que a raiz quadrada de um nmero real x igual a x0.5.

a) a funo funcao_q_le(i) dever ler i caracteres e retornar o seu valor decimal. b) a funo funcao_q_escreve (a, i) dever escrever o valor a de at i dgitos. 160) O nmero irracional pode ser calculado

Vetores
Exerccios de Fixao
162) Faa um programa que leia e imprima o resultado da soma entre dois vetores inteiros de 50 posies. 163) Elabore um algoritmo que, dados dois vetores inteiros de 20 posies, efetue as respectivas operaes indicadas por um outro vetor de 20 posies de caracteres tambm fornecido pelo usurio, contendo as quatro operaes aritmticas em qualquer combinao, armazenando os resultados em um quarto vetor. 164) Construa um algoritmo que preencha um vetor de 100 elementos inteiros colocando 1 na posio correspondente a um quadrado perfeito e 0 nas demais. 165) Faa um programa que leia uma conjunto de linhas de texto, terminadas com uma linha vazia e imprima a quantidade de cada uma das letras minsculas encontradas no texto. 166) Faa um programa que leia uma linha de texto, terminada como um <Enter> e imprima o inverso da linha que foi lida. Exemplo: Isto e apenas um exemplo olpmexe mu sanepa e otsI 167) Faa uma funo chamada inverte , que receba um vetor de nmeros inteiros como parmetro e seu tamanho. A funo deve inverter a ordem dos Pgina 18 de

( 1) . Construa uma i =0 2i + 1 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 .
atravs da expresso = 4
i

161) As razes de uma equao do segundo grau da forma ax2 + bx + c = 0 podem ser calculadas atravs da expresso

x=

= b2 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

b , 2a

onde

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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 . 168) Faa um programa que leia um conjunto de linhas de texto e imprima a linha que teve o maior nmero de vogais. Considere que cada linha ter um mximo de 80 caracteres. 169) Faa um programa que leia uma seqncia de 10 nmeros e informe o total de ocorrncias do ltimo nmero lido. Exemplo: supondo a seguinte seqncia de nmeros 38 4 23 5 6 7 4 12 4 o resultado ser: O nmero 4 apareceu 3 vezes 170) Faa um programa que leia um texto (seqncia de linhas) terminado por uma linha vazia (uma linha com apenas um <Enter>) e informe o total de ocorrncias de cada dgito (de 0 at 9). Os dgitos que no ocorreram no texto no devem ser listados. Exemplo: supondo a seguinte seqncia de caracteres:
Este eh 1 exemplo. Esta eh apenas a linha 2 do exemplo. A linha 3 vem depois da linha 2. O programa deve funcionar para muito mais do que 239 casos.

posio 6. se a chave for 413, o resultado ser: Chave no encontrada. 172) Faa um programa que leia a matricula e a nota final de 10 alunos de uma turma de LTP1 e imprima os dados dos alunos (matricula e nota) ordenados por nota (ordem decrescente). 173) Faca uma funo que receba um vetor de caracteres chamado linha e um caracter chamado ch como parmetros. Retire todas as ocorrncias do caracter ch do vetor linha . O fim do vetor linha ser indicado pelo caracter '\n'. Faca um programa para testar a sua funo. 174) Faa uma funo que receba um vetor de caracteres, seu tamanho e um caracter e retire todas as ocorrncias desse caracter no vetor. A funo deve retornar o total de caracteres restantes no vetor. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 175) 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. 176) Faa um programa que leia um texto (seqncia de linhas) da entrada e imprima as 5 letras minsculas de maior ocorrncia no texto. Dica: Faca um vetor de contadores, um para cada letra e ordene este vetor em ordem decrescente. 177) Faa uma funo que receba um vetor de caracteres, seu tamanho e dois caracteres e substitua o todas as ocorrncias do 1 caracter pelo 2o. Faa uma main() para testar sua funo, do jeito que voc achar 178) Faa uma funo que receba um vetor de caracteres, seu tamanho e um inteiro. Se o caracter da posio indicada pelo inteiro for letra, retornar o total de letras do vetor; seno, retornar o total de caracteres no-letra. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. Pgina 19 de

A sada ser:
O O O O dgito dgito dgito dgito 1 2 3 9 apareceu apareceu apareceu apareceu 1 3 2 1 vez(es). vez(es). vez(es). vez(es).

171) Faa um programa que leia um vetor ordenado de 10 nmeros inteiros e uma chave, informe a posio da chave no vetor ou uma mensagem de erro se o nmero no for encontrado. Obs.: faa uma funo que realize a busca. Esta funo no dever imprimir nada. Exemplo: supondo a seguinte seqncia: 1 2 3 8 97 412 446 957 8912 8974 se a chave for 446, o resultado ser: Chave na

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
179) 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. 180) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne 1 (um) se o vetor estiver ordenado de forma crescente ou 0 (zero) se no estiver. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 181) Faa uma funo que receba dois vetores de inteiros e seus tamanhos e imprima os elementos comuns aos dois vetores. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 182) 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. 183) Faa uma funo que implemente uma busca binria. Esta funo recebe um vetor de caracteres, seu tamanho e uma chave e r etorna a posio da chave no vetor. Faa uma main() em que, se a chave for encontrada no vetor, ela ser substituda por um * (asterisco). 184) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne 1 (um) se o vetor estiver ordenado de forma decrescente ou 0 (zero) se no estiver. Faa uma main() para testar sua funo, do jeito que voc achar necessrio. 185) 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 186) 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.

Exerccios Propostos
187) Faa um programa que leia um texto e uma chave, e embaralhe as letras do texto conforme a ordem dada pela chave. Por exemplo: texto: chave: sada: abcdefghij 31524 caebdhfjgi

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: novo texto: abcdefg abcdefg

Para esse caso a sada seria: sada: caebd f g Pgina 20 de

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
188) 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. 189) 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 190) 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. 191) 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. 192) Faca um programa que leia uma seqncia de 100 nmeros da entrada de forma desordenada. O programa deve imprimir, aps a leitura, os nmeros que se repetiram na seqncia, informando quantos vezes cada um deles apareceu. 193) 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. 194) 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) e Nmero de emprstimos (inteiro) e 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 termina quando for lido um cdigo de filme invlido. 195) 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. 196) 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 Pgina 21 de

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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. 197) (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) 198) (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: v1 = {1, 4, 5, 9, 111} v2 = (3, 3, 5, 8, 300} sada: v3 = {1, 3, 3, 4, 5, 5, 8, 9, 111, 300} 199) (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: 1 1 4 9.5 1 800 4 -3.2 9.5 801 0 sada: 1 4 9.5 800 -3.2 801 200) (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); }

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. 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 201) (Prova 3 - 96/2) Faa um programa que leia uma seqncia de nmeros reais terminada por 0 (zero) (com, no mximo , 1000 nmeros diferentes - o usurio bonzinho) e imprima o nmero de maior ocorrncia. Note que pode -se ter mais do que 1000 nmeros na entrada de dados. 202) (Prova 2 - 97/1) Faa um programa que codifique um texto lido da entrada. Inicialmente o programa dever ler duas tabelas de codificao, uma para codificar as letras minsculas e outra para as maisculas. As tabelas associam a cada letra um outro caracter qualquer. A seguir o programa ler um texto terminado por uma linha vazia, codificando todas as letras que aparecem no texto. 203) (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: Pgina 22 de

parmetros : Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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. 204) (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. 205) (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. 206) Voc foi encarregado de desenvolver um programa em C 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. Sabe-se 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. a) Voc dever seguir os seguintes passos:

b) Faa uma funo que leia do teclado os dados do estoque e armazene-os em vetores (passados Lembre-se sempre Pgina 23 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
como parmetro); c) 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; 212) Construa um programa que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos. 213) Construa uma funo booleana em C que receba como parmetros uma matriz quadrada e a varivel n, dimenso da matriz. A funo dever devolver true(1), se a matriz for a matriz identidade de dimenso n, ou false(0), caso contrrio. 214) Construa uma funo booleana em C que receba como parmetros uma matriz quadrada e a varivel n, dimenso da matriz. A funo dever devolver true(1), se a matriz for simtrica, ou false(0), caso contrrio. 215) Construa uma funo booleana em C que receba como parmetros duas matrizes quadradas e a varivel n, dimenso das matrizes. A funo dever imprimir a soma das duas matrizes linha a linha. 216) (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!!!):
1 2 3 4 5 6 7 8 A= 9 10 11 12 13 14 15 16 1 2 AT = 3 4 5 9 13 6 10 14 7 11 15 8 12 16

d) No final voc dever exibir um relatrio. Faa


uma funo para ordenar o vetor em ordem decrescente.

Matrizes
Exerccios de Fixao
207) 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. 208) 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. 209) Faa um programa que leia uma matriz de 4 x 5 elementos, calcule a soma de cada linha e a soma de todos os elementos. 210) 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. 211) 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.

Exerccios Propostos
217) A tabela dada a seguir contm vrios itens que esto estocados em vrios armazns de uma companhia. fornecido, tambm, o custo de cada um dos produtos arma zenados.
PRODUTO 1 PRODUTO2 PRODUTO3

Armazm 1 Armazm 2 Armazm 3 Custo

1200 1400 2000 260

3700 4210 2240 420

3737 4224 2444 330

Fazer um programa que: Lembre-se sempre 32 A Sorte Ajuda aos Competentes Pgina 24 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
1. leia o estoque inicial; 2. determine e imprime quantos itens esto armazenados em cada armazm; 3. qual o armazm que possui a maior quantidade de produto 2 armazenado; 4. o custo total de: - cada produto em cada armazm; - estoque em cada armazm; - cada produto em todos os armazns. 218) O tempo que um determinado avio dispensa para percorrer o trecho entre duas localidades distintas est disponvel atravs da seguinte tabela:
A 00 02 11 06 15 11 01 B 02 00 07 12 04 02 15 C 11 07 00 11 08 03 13 D 06 12 11 00 10 02 01 E 15 04 08 10 00 05 13 F 11 02 03 02 05 00 14 G 01 15 13 01 13 14 00

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]);

A B C D E F G

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

a) Construa uma funo que leia a tabela acima e armazene as informaes em uma matriz global; b) Construa uma funo que leia da entrada o cdigo de duas cidades (A, B, ..., F e G) e informe ao usurio o tempo necessrio para percorrer a distncia entre as duas cidades por ele fornecidas. A leitura termina quando o usurio fornece duas cidades iguais (fonte e destino). c) Construa uma funo que imprima a tabela sem repeties (apenas o tringulo superior ou o tringulo inferior). d) Construa uma funo que leia da entrada os cdigos de um conjunto de cidades e imprima o tempo total para cumprir todo o percurso entre as cidades fornecidas. A leitura termina quando o usurio fornece um cdigo de cidade invlido. e) Faa uma funo main () para testar as suas funes. 219) 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. O programa dever

Teste seu programa com os seguintes dados:


Matrcula 134 99 120 N1 8 8 10 N2 5 6 9 N3 7 5 10 N4 9 2 10 N5 10 3 8

A matriz resultante ser:


Matrcula 99 134 120 N1 8 8 10 N2 6 5 9 N3 5 7 10 N4 2 9 10 N5 3 10 8 Mdia 3 7 9

220) A Escola Pagou Passou possui 10 turmas, com exatamente 60 alunos em cada uma, e a sua diretoria resolveu fazer o acompanhamento do rendimento dos alunos matriculados em cada uma das turmas. Pgina 25 de

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
Para atender as necessidades da diretoria voc dever construir um programa em C que faa o seguinte: caracteres da segunda string para o final da primeira string. Faa um programa para testar sua funo. 224) Faa uma funo chamada strcmp 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. Faa um programa para testar sua funo. 225) Faa uma funo chamada puts que recebe uma string como parmetro e imprime seu contedo na tela. Aps imprimir a string, a funo deve pular uma linha. Faa um programa para testar sua funo. 226) Faa uma funo chamada gets que recebe uma string como parmetro e preenche esta string com os caracteres lidos atravs do teclado. A leitura termina quando o u surio digita <Enter>. Faa um programa para testar sua funo. 227) Faa uma funo que receba uma string como parmetro e imprima a string invertida. 228) Faa uma funo que receba uma string como parmetro e converta todos as letras minsculas encontradas em letras maisculas. Os demais caracteres permanecem inalterados. 229) 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. 230) Refaa a questo anterior considerando os caracteres ., ,, ; como separadores de palavras, alm do espao em branco. 231) 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 .

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 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.

Strings
Exerccios de Fixao
221) Faa uma funo chamada strcpy que recebe duas strings como parmetros e copie todos os elementos da segunda string para a primeira, apagando-a. Faa um programa para testar sua funo. 222) Faa uma funo chamada strlen que recebe uma string como parmetro e retorne o nmero de caracteres da string. O caracter \0 no deve ser considerado na contagem. Faa um programa para testar sua funo.

232) Faa uma funo que receba uma string como 223) Faa uma funo chamada strcat que recebe parmetro e um caracter. A funo deve retornar a duas strings como parmetros e copie todos os Lembre-se sempre Pgina 26 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
ltima posio onde o caracter foi encontrado na string ou -1 caso o caracter no aparea na string . 233) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retirar todas as ocorrncias deste caracter da string . 234) 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. 235) 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 . 236) 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. 237) Faa uma funo chamada strncpy que recebe duas string s (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. 238) Faa um funo chamada stricmp 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. Frase gerada: Esta Frase E Apenas Um Exemplo 240) 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. 241) 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. 242) Modifique a funo do item anterior de modo a imprimir a string em modo justificado, alm de realizar o seu particionamento. 243) 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

A funo deve retornar o valor 4, pois o valor da posio onde comea a string leo na string camaleo. 244) 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. 245) (Prova 3 - 94/1) Considere a seguinte lista de pases e respectivas capitais: Canad Ottawa Inglaterra Londres Frana Paris Portugal Lisboa Japo Tquio Pgina 27 de

Exerccios Propostos
239) (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

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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. 246) (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 inteiro: 7 2a string: apenas um 247) (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 248) (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 249) (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

250) (Prova 4 - 96/2) Faa um programa que leia um texto, em javans, terminando com uma linha vazia e imprima o nmero de ocorrncias de cada palavra no texto. O programa dever imprimir uma lista das palavras que apareceram no texto e o nmero de ocorrncias de cada uma delas. Sabe-se que em javans, existem 2548 palavras, a maior palavra possui 78 letras e entre cada palavra existe apenas um nico espao em branco. a) faa uma funo que leia uma palavra, b) faa uma funo para procurar uma palavra em uma lista de palavras, c) faa o programa utilizando as funes acima. 251) (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: Exemplo 1 Exemplo 2 1a string: Esta uma linha Esta uma linha 2a string: amu uma resultado: 7 -1542 Pgina 28 de

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
252) (Prova 4 - 97/1) Faa uma funo chamada cria_string() que recebe como parmetros uma string s 1 (de tamanho suficiente), um formato fmt (tambm uma string) e um nmero inteiro positivo num (nesta ordem). Esta funo ir preencher a string s 1 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 s 1 , 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: s 1 : (irrelevante, mas de tamanho suficiente) fmt: O valor %d a respos ta num: 15 Resultado aps a execuo da funo s 1 : O valor 15 a resposta fmt: (irrelevante) num: (irrelevante) Exemplo 2 Parmetros passados: s 1 : (irrelevante, mas de tamanho suficiente) fmt: Converta o %d para caracteres num: 17430 Resultado aps a execuo da funo s 1 : Converta o 17430 para caracteres fmt: (irrelevante) num: (irrelevante) 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. 254) Faa um programa que leia do arquivo matriz.txt 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. Dica: use a funo fscanf . O resultado para a matriz que est no disquete 2085. 255) Faa um programa que leia do arquivo matriz.txt os valores de uma matriz 10 x 10 de nmeros inteiros e gere um arquivo chamado transp.txt, contendo a matriz transposta da que foi lida. 256) 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.txt. 257) Faa um programa que leia o arquivo nomes.txt, gerado por voc, ordene alfabeticamente a seqncia de nomes e os imprima na tela. 258) 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". 259) 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. 260) Faa um programa que leia um arquivo contendo linhas de texto e imprima o nmero de caracteres, o nmero de linhas e o nmero de palavras contidas no texto. Considere que cada linha do texto no contem mais que 80 caracteres (adicione mais um para o '\n' e outro para o '\0'). Pgina 29 de

Arquivos
Exerccios de Fixao
253) Faa um programa que leia um arquivo. 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

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
261) Faa um programa que leia um arquivo contendo linhas de texto e imprima as linhas em ordem alfabtica. Considere que cada linha do texto no contem mais que 80 caracteres. 262) 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. 263) 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. 264) 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. 265) Faa um programa que leia o arquivo binrio "texto", converta todas as letras encontradas para minsculas e armazene o resultado em um arquivo texto chamado texto.txt. 266) Faa um programa que leia da entrada um nome de arquivo. Este arquivo contem 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. 267) Faa um programa que leia de um arquivo texto (2a.txt) duas strings de at 15 caracteres e leia dois nmeros inteiros do teclado ( n1 e n2) e grave um segundo arquivo texto (2b.txt) com n1 vezes a primeira string e n2 vezes a segunda string. 268) 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. 269) Faa um programa que leia um arquivo texto (4a.txt) com nomes de at 30 caracteres e idades e grave um arquivo texto (4b.txt) com os dados daqueles cujos nomes comecem por A. 270) Faa um programa que leia um arquivo texto (5a.txt) com nomes de at 30 caracteres e grave um outro arquivo binrio (5b.bin) com o nome e a quantidade de letras maisculas nesse nome. 271) 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. 272) Faa um programa que leia um arquivo texto (7a.txt) com linhas de no mximo 80 caracteres e imprima em um arquivo binrio (7b.bin) o nmero total de vogais, consoantes e caracteres no letras encontrados no texto. O texto contm apenas letras minsculas. 273) Faa um programa que leia dois caracteres da entrada e um arquivo de texto (8a.txt) contendo linhas de no mximo 80 caracteres. O programa deve trocar todas as ocorrncias do primeiro caracter no texto pelo segundo caracter e imprimir o texto resultante em outro arquivo texto (8b.txt). 274) Faa um programa que leia um arquivo texto (9a.txt) contendo 10 nomes de at 15 caracteres e grave um outro arquivo texto (9b.txt) com os nomes ordenados. 275) Faa um programa que leia uma matriz de caracteres 6x6 de um arquivo texto (10a.txt) e grave um arquivo binrio (10b.bin) com o nmero da linha e a maior letra de cada linha. 276) Faa um programa que leia uma linha de at 80 caracteres do teclado e gere um arquivo texto (11a.txt) com os caracteres na seguinte seqncia: 1o, ltimo, 2o, penltimo, 3o, ante-penltimo, ...

Exerccios Propostos

277) 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 Lembre-se sempre Pgina 30 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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. 278) (Prova 3 - 97/1) Faa um programa, utilizando as funes abaixo, que leia de um arquivo chamado nomenota.txt, 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 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(). 279) (Prova 4 - 97/1) Faa um programa que leia um arquivo texto chamado entrada.txt e imprima o nmero de caracteres, palavras e linhas encontrados no texto. Os nicos separadores de palavras so o caracter de espao em branco e o caracter de fim de linha. As palavras sero separadas por apenas um caracter de espao em branco ou caracter de fim de linha. Obs.:

a) Os tamanhos da maior palavra e da maior linha so desconhecidos, logo no adianta declarar um vetor de tamanho enorme para guardar uma palavra ou uma linha. b) No se sabe, a priori, q uantas linhas o arquivo possui, nem muito menos quantas palavras por linha Exemplo para voc se basear:
Arquivo entrada.txt: Este texto apenas para voc se basear<FIM_DE_LINHA> O seu programa deve funcionar para outros exemplos<FIM_DE_LINHA> Lembre que tu no sabes quantas linhas o arquivo possui<FIM_DE_LINHA> <FIM_DO_ARQUIVO> Sada do programa nmero de caracteres = 144 nmero de palavras = 26 nmero de linhas = 3

280) (Prova 4 - 97/1) Voc foi contratado para desenvolver um programa de reserva de passagens Lembre-se sempre Pgina 31 de 32 A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br

Linguagem de Programao C
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: 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 texto arq_aviao.txt 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 texto arq_destino.txt 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.

Lembre-se sempre 32 A Sorte Ajuda aos Competentes

Pgina 32 de

Prof.: Oswaldo Borges Peres profoswaldo@yahoo.com.br