Você está na página 1de 8

Universidade do Estado de Santa Catarina - UDESC

Disciplina: Linguagem de Programao LPG0002 TADS


Prof. Kariston Pereira

Lista de Exerccios de Fixao

Fonte: livro Primeiro Curso de Programao em C (autor: Edson Luiz Frana Senne; editora Visual Books)

Aula 01:
6. As variveis p, s e t so mesmo necessrias no programa p2.c? possvel refazer o programa
usando apenas a varivel d?
7. Elaborar um programa para ler os valores (inteiros e positivos) para as variveis a e b,
correspondentes aos catetos de um tringulo retngulo, e determinar a rea do tringulo pela
frmula: rea = raizquadrada (s(s-a)(s-b)(s-c), onde c o valor para a hipotenusa do tringulo e:
s = (a + b + c)/2
8. Escrever um programa para determinar a quantidade de litros de combustvel gastos em uma
viagem por um automvel que faz 12 km/litro. Para isso, sabe-se que o tempo gasto na viagem
T = 35 min e a velocidade mdia do automvel V = 80 knm/h.
9. Imagine que C armazena o valor de uma temperatura em graus centgrados. Escrever um
programa para apresentar este valor em graus Fahrenheit. A frmula de converso : F = (9 * C
+ 160) / 5, onde F a temperatura em graus Fahrenheit e C a temperatura em graus
centgrados.
10. Considere que A e B armazenam valores inteiros diferentes. Escrever um programa para
efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que
a varivel B passe a possuir o valor da varivel A. Apresentar os valores finais de A e B.

Aula 02:
5. Imagine que o endereo da varivel x 0022FF7C. Identifique o que ser exibido pelo
seguinte trecho de programa:
int x = 3;
int y;
int * z;
printf (%d %p\n, x, &x);
y = (int) (&x);
printf (%d %X\n, x, y);
z = y;
printf (%X %p\n, z, z);
6. Identifique os valores a serem exibidos pelo seguinte trecho de programa:
int a = 5, b = 3;
int c;

c = a++ + --b; printf (a=%d


c = ++a + b--; printf (a=%d
c = --a + ++b; printf (a=%d
c = a-- + b++; printf (a=%d

b=%d
b=%d
b=%d
b=%d

c=%d\n, a, b, c);
c=%d\n, a, b, c);
c=%d\n, a, b, c);
c=%d\n, a, b, c);

9. Escreva um programa para verificar qual dos seguintes casos verdadeiro para os valores de
duas variveis inteiras A e B: (a) A divisor de B; (b) B divisor de A; (c) nem A divide B,
nem B divide A.
10. Escreva um programa para apresentar em ordem crescente os valores das variveis A, B e C.
Note que o programa deve funcionar para quaisquer combinaes de valores atribudos s
variveis.

Aula 03:
6. Dado o valor de E, calcular S= 1 + 1/2 + 1/4 + 1/6 + ... at que um termo da srie seja menor
do que E.
7. Dado o valor de N, calcular N! = 1 * 2 * ... * N.
8. Calcular o valor de S, dado por: S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50
9. Calcular o valor de S, dado por: S = 1/1 2/4 + 3/9 4/16 + ... 10/100
10. Calcular e mostrar o valor de PI, usando a srie: PI = 4 4/3 + 4/5 4/7+ 4/9 - ... at que um
termo seja menor do que 0.0001, em valor absoluto. Use a funo abs( ) para determinar o valor
absoluto de um nmero.

Aula 04:
3. Dados os valores de N (int, positivo) e x (float) , calcular o valor de:
E = 1 + x + x2/2! + x3/3! + ... + xn/n!
7. Dados os valores de L (float) e N (int), a partir de um quadrado de lado igual a L, pode-se
construir uma sequncia de outros quadrados, tais que os vrtices de cada novo quadrado so os
pontos mdios dos lados do quadrado anterior. Calcule a soma das reas dos N primeiros
quadrados assim construdos.
8. Dados os valores de L (float) e A (float), a partir de um quadrado de lado L, uma sequncia
infinita de quadrados pode ser construda onde a medida do lado de cada novo quadrado
sempre a metade da medida do lado do quadrado anterior. Calcule o nmero de quadrados
necessrios na sequncia at que se obtenha um quadrado com rea menor do que A.
9. Dados os valores de M e N (inteiros), considere um tringulo equiltero cujos lados medem
M. Unindo-se os pontos mdios dos seus lados, obtm-se um segundo tringulo equiltero.
Unindo-se os pontos mdios do lados deste novo tringulo forma-se um terceiro e assim por
diante. Calcule a soma dos permetros dos N primeiro tringulos assim formados.

10. A espessura de uma folha de papel de E mm (E dado). Forma-se uma pilha de folhas,
colocando-se duas na primeira vez e em cada vez sucessiva, tantas quantas j foram colocadas
anteriormente. Repetindo-se a operao N vezes (para um N dado), qual ser a altura final da
pilha?
12. Um programa deve ler caracteres correspondentes aos conceitos atribudos aos alunos de
uma classe. Os conceitos possveis so representados pelas letras (maisculas ou minsculas):
A, B, C, D e E. Qualquer outro caractere diferente destas letras deve ser considerado como
conceito incorreto. Considere que a letra Z (maiscula) encerra a leitura do programa. Ao
final, o programa dever mostrar quantos conceitos de cada tipo foram atribudos e quantos
conceitos incorretos foram lidos.

Aula 05:
2. Um palndromo um texto que pode ser lido tanto da esquerda para a direita como da direita
para a esquerda. Por exemplo, sem considerar sinais grficos, acentos e letras maisculas e
minsculas: socorram me subi no onibus em marrocos. Outros exemplos de palndromos
ocorrem com nmeros (por exemplo: 12321) ou com datas (por exemplo: 20-02-2002). Ler um
conjunto de N dgitos e determinar se este conjunto corresponde a um palndromo ou no.
3. Ler um conjunto de 0s e 1s (isto , um inteiro binrio) e imprimir seu equivalente
decimal.
4. Ler um inteiro N e calcular o valor da constante matemtica e, utilizando a seguinte
expresso: e = 1 + (1/1!) + (1/2!) + (1/3!) + ... O programa deve considerar N termos na
somatria.
5. Ler os valores de N (int) e x (float) e calcular o valor de ex , utilizando a seguinte expresso:
ex = 1 + (x/1!) + (x2/2!) + (x3/3!) + ... O programa deve considerar N termos na somatria.
6. Calcular o valor de p com a srie infinita: p = 4 (4/3) + (4/5) (4/7) + ... Quantos termos da
srie seriam necessrios para conseguir p = 3.14159?
10. Fazer um programa para produzir o calendrio de um determinado ms de um dado ano. O
programa deve ler os valores de MES e ANO, produzir o calendrio, e perguntar se o usurio
deseja entrar com novos dados. Para saber qual o dia da semana correspondente a
01/janeiro/ANO tem-se o algoritmo:
P = (1+ (ANO 1973) + (ANO 1973)/4 (ANO - 1901)/100 + (ANO 1601) / 400 (ANO 1) /4000) % 7 + 1
O valor de p ser um nmero do intervalo [1,7], onde 1 corresponde a domingo; 2 corresponde a
segunda-feira, etc. Os algoritmos para ano bissexto e para o dia da semana devem ser
implementados como funes.

Aula 06:
2. Implemente o seguinte algoritmo de classificao de um vetor (conhecido como bubble
sort): fazer vrias passagens de verificao pelo vetor; em cada passagem, sempre que houver
um par de valores consecutivos fora de ordem, estes valores devem ser trocados de posio no
vetor; em cada passagem, sempre que houver um par de valores consecutivos fora de ordem,

estes valores devem ser trocados de posio no vetor; parar quando em uma passagem no
houver troca alguma. Teste o programa para vetores gerados aleatoriamente.
3. Desenvolva um programa para simular o sistema de emisso de bilhetes de uma companhia
area. A companhia possui N voos onde, em cada um dos quais, existem M lugares disponveis.
Os primeiros M/2 lugares de cada voo esto reservados para no fumantes e os lugares
restantes de cada voo esto reservados para fumantes. Utilize uma matriz de N linhas e M
colunas para representar os assentos dos voos desta companhia. Inicialize os elementos da
matriz em zero para indicar que todos os assentos de cada um dos N voos esto disponveis.
medida que os assentos forem sendo ocupados, atribua o valor 1 ao elemento correspondente da
matriz. Devem ser gerados aleatoriamente:
- O nmero do voo;
- O nmero de passageiros do voo;
- Se o passageiro da rea de fumantes ou da rea de no fumantes.
O programa dever exibir ao final da simulao as seguintes estatsticas:
- O nmero mdio de passageiros por voo;
- O nmero mdio de passageiros por rea em cada voo;
- O nmero mdio de passageiros no embarcados por falta de assento (notar que pode haver
lugar no avio, mas no haver lugar na rea correspondente).
4. Modifique o programa do exerccio anterior para gerar mais um nmero aleatrio indicando
se o passageiro aceita ou no mudar de rea (de fumante para no fumante ou vice-versa), caso
no haja mais lugar na rea desejada, mas ainda exista lugar no avio.
5. Um vetor P contm o peso de N pessoas. Desenvolva um programa que identifique qual a
pessoa mais pesada e qual a pessoa mais leve. O tamanho do vetor e os pesos devem ser
gerados aleatoriamente. O programa deve produzir a seguinte sada:
A pessoa nmero xxx a mais pesada ( peso = xxx.x Kg)
A pessoa nmero xxx a mais leve ( peso = xxx.x Kg)
8. Uma fbrica produz dois tipos de produtos: P1 e P2. A produo anual desta fbrica
registrada, ms a ms, numa tabela como:
Jan

Fev

Mar

Abr

Mai

Jun

Jul

Ago

Set

Out

Nov

Dez

P1
P2
O setor de controle de vendas tem uma tabela de preos de custo e venda por produto como a
seguinte:
Custo

Venda

P1
P2
Crie um programa que calcule e exiba: o lucro anual relativo a cada tipo de produto e o lucro
anual total da fbrica. Considere que os dados de produo so gerados aleatoriamente e os
dados de preos so solicitados ao usurios do programa.
9. Os palpites de um jogador da loteria esportiva so armazenados em um vetor. Cada elemento
deste vetor contm o valor: 1 (palpite simples), 2 (palpite duplo) ou 3 (palpite triplo).
Desenvolva um programa para calcular o valor a ser pago pelo apostador, ou seja: VALOR =

APOSTA * 2D * 3T, onde: APOSTA o valor de cada aposta (a ser solicitado ao usurio do
programa) D o nmero de palpites duplos e T, o nmero de palpites triplos.
10. Elabore um programa que, dados os N valores inteiros de um vetor A, classificados em
ordem crescente, determine e mostre um vetor B com os mesmos elementos de A, mas sem
repeties. O tamanho e os elementos do vetor A devem ser gerados aleatoriamente.

Aula 07:
2. Uma pesquisa sobre a populao de uma cidade coletou as seguintes caractersticas das
pessoas:
- Sexo (1 = masculino; 2 = feminino);
- Cor dos olhos (A = azul; V= verde; C = castanho; P = preto);
- Altura (em metros);
- Idade (em anos).
Identifique uma estrutura conveniente para representar estes dados. Considere que, na pesquisa,
foram entrevistados N pessoas e elabore um programa para determinar:
- A mdia das idades e das alturas das pessoas;
- A porcentagem de pessoas com idades maiores do que a mdia;
- A porcentagem de mulheres com altura maior do que 1.60 m, idade entre 18 e 25 anos e olhos
verdes.
4. Crie um novo tipo Complexo para realizar aritmtica com nmeros complexos. Utilize
variveis double para representar os campos deste tipo. Implemente funes para as seguintes
operaes: ler um nmero complexo, somar dois nmeros complexos, subtrair dois nmeros
complexos, mostrar um nmero complexo na forma (a, b) onde a a parte real e b, a parte
imaginria.
5. Crie um novo tipo Tempo para tratar dados que representem valores de hora, minuto e
segundo. Implemente as funes incSegundo, incMinuto e incHora, que incrementam o tempo
armazenado de 1 segundo, 1 minuto e 1 hora, respectivamente, mantendo sempre o valor de
forma consistente. Implemente funes para ler um valor de tempo e para mostrar um valor de
tempo no formato hh:mm:ss.
6. Crie o tipo Data para tratar dados representando valores de dia, ms e ano. Implemente
funes para ler uma data vlida e para mostrar uma data no formato dd/mm/aaaa. Implemente
as funes DiaSeguinte e DiaAnterior para incrementar e decrementar a data, respectivamente,
mantendo-a vlida.
7. Crie um tipo Retngulo com campos comprimento e largura. Implemente funes para
calcular o permetro e a rea de um retngulo. Teste o programa para retngulos gerados
aleatoriamente.
10. Considere uma hierarquia de tipos: Quadriltero, Retngulo e Quadrado. Como devem
ser definidos os campos de cada um dos tipos desta hierarquia? Escreva um programa que gera
aleatoriamente quatro pares de coordenadas (x, y) e identifica, na hierarquia, qual tipo de figura
geomtrica corresponde a estas coordenadas.

Aula 08:
2. O processo de localizar um determinado valor em um vetor denominado procura. O valor a
ser encontrado no vetor denominado chave de procura. Implemente uma funo
ProcuraLinear (int *v, int n, int c) que utilize um comando for contendo um comando if para
comparar cada um dos n elementos do vetor v com a chave de procura c. Se a chave de procura
for localizada, a funo deve retornar a posio (ndice) da chave do vetor. Se a chave no for
localizada, a funo deve retornar -1. Teste a funo com vetores e chaves de procura gerados
aleatoriamente.
3. A procura em um vetor pode ser feita eficientemente se o vetor estiver ordenado. Escreva
uma funo ProcuraBinaria (int *v, int n, int c) que implemente o seguinte algoritmo: seja m
o valor do elemento que ocupa a posio central no vetor; compare a chave de procura com
este elemento: se c for igual a m, a chave de procura foi localizada e a funo deve retornar seu
ndice no vetor; se c for menor que m, a procura deve continuar apenas na primeira metade do
vetor. Implemente a funo usando comandos iterativos, como for ou while. Teste a funo
com vetores e chaves de procura gerados aleatoriamente.
6. Considere a seguinte definio rigorosa para a funo mdc, que calcula o mximo divisor
comum de dois inteiros m e n:
{ m, se n=o
mdc (m,n) =
{mdc (n, m%n), se n>0
Implemente um programa para mostrar o mximo divisor comum de dois valores a e b dados.
Considerando os valores a = 12 e b = 40, exibir a sequncia de chamadas funo mdc e o
valor final calculado.

Aula 09:
1. Considerando a representao de polinmios implementada no programa p28.c, escreva
funes para calcular a soma e a subtrao de dois polinmios. Escreva tambm uma funo
para determinar o valor de um polinmio em um ponto x dado e uma funo para determinar a
derivada de ordem n de um polinmio.
4. Escreva um programa que receba como entrada os valores de dois inteiros m e n, construa e
mostre uma matriz m e n, construa e mostre uma matriz de m linhas e n colunas que possua a
seguinte caracterstica: cada linha i (i = 0, ..., m-1) da matriz armazene a representao binria
de i usando n bits, com 1 bit em cada coluna.
5. Escreva uma funo MatrizProduto (n1, ni, nc, ma, mb) que retorne a matriz resultante do
produto das matrizes ma (de n1 linhas e ni colunas) e mb (de ni linhas e nc colunas).
6. Escreva uma funo Encontra (c, n, v) que retorna o nmero de elementos iguais chave de
procura c existentes no vetor v de n elementos. Teste a funo para vetores e valores de
chaves de procura gerados aleatoriamente.

Aula 10:
1. Modifique o programa p36.c de modo a permitir que um determinado aluno possa ser
excludo do arquivo.
4. Um banco armazena no arquivo CLIENTES.TXT as seguintes informaes: nmero do
cliente (int) nome do cliente (string), saldo (float). Implemente um programa que:
- Leia o nmero do cliente;
- Recupere as informaes do cliente no arquivo;
- Pergunte qual o tipo de operao (depsito ou saque) e o valor envolvido;
- Atualize o saldo do cliente.
O programa deve repetir sua execuo enquanto o usurio desejar.
5. Modifique o programa do exerccio 4 de modo a considerar que o arquivo contm tambm o
limite de crdito do cliente (float). O limite de crdito o mximo que o cliente pode ter de
saldo negativo. As seguintes opes de uso do programa devem estar disponveis:
(A)bertura de Conta
(D)epsito
(S)aque
(L)istagem de Saldo
(F)im
Note que a opo S dever verificar se o saque possvel, dado o saldo disponvel e o limite de
crdito do cliente.
7. Uma empresa organizou uma pesquisa de opinio para determinar o sucesso de seus produtos
(os quais esto numerados de 1 a 50). As pessoas pesquisadas foram divididas em grupos por
sexo (M / F) e por faixa de idade (at 20 anos / mais de 20 anos). Cada pessoa pesquisada
indicou o nmero de dois produtos. O arquivo PESQUISA.TXT armazena os dados coletados,
ou seja: sexo da pessoa pesquisada (char) , faixa etria (int), nmero do primeiro produto (int)
e nmero do segundo produto (int). Implemente um programa que usa este arquivo para gerar o
seguinte relatrio:
PERFIL DOS XXX ENTREVISTADOS
SEXO:

MASCULINO............. XXX.X %
FEMININO...... ........... XXX.X %

FAIXA DE IDADE:

ATE 20 ANOS............ XXX.X %


MAIS DE 20 ANOS.... XXX.X %

PRODUTOS DESTACADOS
____________
MAIS CITADO............ XX (CITADO POR XXX.X % DAS PESSOAS)
MENOS CITADO........ XX (CITADO POR XXX.X % DAS PESSOAS)

Aula 11:
1. Modifique o programa p38.c de modo a permitir a emisso de um extrato da conta, contendo
todos os depsitos e saques efetuados. Utilize um novo arquivo para armazenar os dados dos
depsitos e saques efetuados na conta.
2. Modifique o programa p38.c de modo a permitir a excluso de uma conta.
3. Refaa os exerccios da aula passada, considerando os arquivos como binrios.

Você também pode gostar