• Nenhum resultado encontrado

Lista de Exercícios de Fixação Fonte: livro Primeiro Curso de Programação em C (autor: Edson Luiz França Senne; editora Visual Books)

N/A
N/A
Protected

Academic year: 2021

Share "Lista de Exercícios de Fixação Fonte: livro Primeiro Curso de Programação em C (autor: Edson Luiz França Senne; editora Visual Books)"

Copied!
8
0
0

Texto

(1)

Universidade do Estado de Santa Catarina - UDESC

Disciplina: Linguagem de Programação – LPG0002 – TADS

Prof. Kariston Pereira

Lista de Exercícios de Fixação

Fonte: livro “Primeiro Curso de Programação em C“ (autor: Edson Luiz França Senne; editora Visual Books)

Aula 01:

6. As variáveis p, s e t são mesmo necessárias no programa p2.c? É possível refazer o programa usando apenas a variável d?

7. Elaborar um programa para ler os valores (inteiros e positivos) para as variáveis a e b, correspondentes aos catetos de um triângulo retângulo, e determinar a área do triângulo pela fórmula: área = raizquadrada (s(s-a)(s-b)(s-c), onde c é o valor para a hipotenusa do triângulo e: s = (a + b + c)/2

8. Escrever um programa para determinar a quantidade de litros de combustível gastos em uma viagem por um automóvel que faz 12 km/litro. Para isso, sabe-se que o tempo gasto na viagem é T = 35 min e a velocidade média do automóvel é V = 80 knm/h.

9. Imagine que C armazena o valor de uma temperatura em graus centígrados. Escrever um programa para apresentar este valor em graus Fahrenheit. A fórmula de conversão é: F = (9 * C + 160) / 5, onde F é a temperatura em graus Fahrenheit e C é a temperatura em graus

centígrados.

10. Considere que A e B armazenam valores inteiros diferentes. Escrever um programa para efetuar a troca dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B passe a possuir o valor da variável A. Apresentar os valores finais de A e B.

Aula 02:

5. Imagine que o endereço da variável 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;

(2)

c = a++ + --b; printf (“a=%d b=%d c=%d\n”, a, b, c); c = ++a + b--; printf (“a=%d b=%d c=%d\n”, a, b, c); c = --a + ++b; printf (“a=%d b=%d c=%d\n”, a, b, c); c = a-- + b++; printf (“a=%d b=%d c=%d\n”, a, b, c);

9. Escreva um programa para verificar qual dos seguintes casos é verdadeiro para os valores de duas variáveis 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 variáveis A, B e C. Note que o programa deve funcionar para quaisquer combinações de valores atribuídos às variáveis.

Aula 03:

6. Dado o valor de E, calcular S= 1 + 1/2 + 1/4 + 1/6 + ... até que um termo da série 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 série: 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 função abs( ) para determinar o valor absoluto de um número.

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 sequência de outros quadrados, tais que os vértices de cada novo quadrado são os pontos médios dos lados do quadrado anterior. Calcule a soma das áreas dos N primeiros quadrados assim construídos.

8. Dados os valores de L (float) e A (float), a partir de um quadrado de lado L, uma sequência infinita de quadrados pode ser construída onde a medida do lado de cada novo quadrado é sempre a metade da medida do lado do quadrado anterior. Calcule o número de quadrados necessários na sequência até que se obtenha um quadrado com área menor do que A.

9. Dados os valores de M e N (inteiros), considere um triângulo equilátero cujos lados medem M. Unindo-se os pontos médios dos seus lados, obtêm-se um segundo triângulo equilátero. Unindo-se os pontos médios do lados deste novo triângulo forma-se um terceiro e assim por diante. Calcule a soma dos perímetros dos N primeiro triângulos assim formados.

(3)

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 operação N vezes (para um N dado), qual será a altura final da pilha?

12. Um programa deve ler caracteres correspondentes aos conceitos atribuídos aos alunos de uma classe. Os conceitos possíveis são representados pelas letras (maiúsculas ou minúsculas): A, B, C, D e E. Qualquer outro caractere diferente destas letras deve ser considerado como “conceito incorreto”. Considere que a letra Z (maiúscula) encerra a leitura do programa. Ao final, o programa deverá mostrar quantos conceitos de cada tipo foram atribuídos e quantos conceitos incorretos foram lidos.

Aula 05:

2. Um palíndromo é um texto que pode ser lido tanto da esquerda para a direita como da direita para a esquerda. Por exemplo, sem considerar sinais gráficos, acentos e letras maiúsculas e minúsculas: “socorram me subi no onibus em marrocos”. Outros exemplos de palíndromos ocorrem com números (por exemplo: 12321) ou com datas (por exemplo: 20-02-2002). Ler um conjunto de N dígitos e determinar se este conjunto corresponde a um palíndromo ou não. 3. Ler um conjunto de 0’s e 1’s (isto é, um “inteiro binário”) e imprimir seu equivalente decimal.

4. Ler um inteiro N e calcular o valor da constante matemática e, utilizando a seguinte expressão: e = 1 + (1/1!) + (1/2!) + (1/3!) + ... O programa deve considerar N termos na somatória.

5. Ler os valores de N (int) e x (float) e calcular o valor de ex , utilizando a seguinte expressão: ex = 1 + (x/1!) + (x2/2!) + (x3/3!) + ... O programa deve considerar N termos na somatória. 6. Calcular o valor de p com a série infinita: p = 4 – (4/3) + (4/5) – (4/7) + ... Quantos termos da série seriam necessários para conseguir p = 3.14159?

10. Fazer um programa para produzir o calendário de um determinado mês de um dado ano. O programa deve ler os valores de MES e ANO, produzir o calendário, e perguntar se o usuário 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 número 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 funções.

Aula 06:

2. Implemente o seguinte algoritmo de classificação de um vetor (conhecido como “bubble sort”): fazer várias passagens de verificação pelo vetor; em cada passagem, sempre que houver um par de valores consecutivos fora de ordem, estes valores devem ser trocados de posição no vetor; em cada passagem, sempre que houver um par de valores consecutivos fora de ordem,

(4)

estes valores devem ser trocados de posição no vetor; parar quando em uma passagem não houver troca alguma. Teste o programa para vetores gerados aleatoriamente.

3. Desenvolva um programa para simular o sistema de emissão de bilhetes de uma companhia aérea. A companhia possui N voos onde, em cada um dos quais, existem M lugares disponíveis. Os primeiros M/2 lugares de cada voo estão reservados para “não fumantes” e os lugares restantes de cada voo estão 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 estão disponíveis. À medida que os assentos forem sendo ocupados, atribua o valor 1 ao elemento correspondente da matriz. Devem ser gerados aleatoriamente:

- O número do voo;

- O número de passageiros do voo;

- Se o passageiro é da área de fumantes ou da área de não fumantes. O programa deverá exibir ao final da simulação as seguintes estatísticas: - O número médio de passageiros por voo;

- O número médio de passageiros por área em cada voo;

- O número médio de passageiros não embarcados por falta de assento (notar que pode haver lugar no avião, mas não haver lugar na área correspondente).

4. Modifique o programa do exercício anterior para gerar mais um número aleatório indicando se o passageiro aceita ou não mudar de área (de fumante para não fumante ou vice-versa), caso não haja mais lugar na área desejada, mas ainda exista lugar no avião.

5. Um vetor P contém 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 saída:

A pessoa número xxx é a mais pesada ( peso = xxx.x Kg) A pessoa número xxx é a mais leve ( peso = xxx.x Kg)

8. Uma fábrica produz dois tipos de produtos: P1 e P2. A produção anual desta fábrica é registrada, mês a mês, 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 preços 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 fábrica. Considere que os dados de produção são gerados aleatoriamente e os dados de preços são solicitados ao usuários do programa.

9. Os palpites de um jogador da loteria esportiva são armazenados em um vetor. Cada elemento deste vetor contém o valor: 1 (palpite simples), 2 (palpite duplo) ou 3 (palpite triplo).

(5)

APOSTA * 2D * 3T, onde: APOSTA é o valor de cada aposta (a ser solicitado ao usuário do programa) D é o número de palpites duplos e T, o número 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 repetições. O tamanho e os elementos do vetor A devem ser gerados aleatoriamente.

Aula 07:

2. Uma pesquisa sobre a população de uma cidade coletou as seguintes características 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 média das idades e das alturas das pessoas;

- A porcentagem de pessoas com idades maiores do que a média;

- 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 aritmética com números complexos. Utilize variáveis double para representar os campos deste tipo. Implemente funções para as seguintes operações: ler um número complexo, somar dois números complexos, subtrair dois números complexos, mostrar um número complexo na forma (a, b) onde a é a parte real e b, a parte

imaginária.

5. Crie um novo tipo Tempo para tratar dados que representem valores de hora, minuto e segundo. Implemente as funções 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 funções 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, mês e ano. Implemente funções para ler uma data válida e para mostrar uma data no formato dd/mm/aaaa. Implemente as funções DiaSeguinte e DiaAnterior para incrementar e decrementar a data, respectivamente, mantendo-a válida.

7. Crie um tipo Retângulo com campos comprimento e largura. Implemente funções para calcular o perímetro e a área de um retângulo. Teste o programa para retângulos gerados aleatoriamente.

10. Considere uma hierarquia de tipos: Quadrilátero, Retângulo 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 geométrica corresponde a estas coordenadas.

(6)

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 função

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 função deve retornar a posição (índice) da chave do vetor. Se a chave não for localizada, a função deve retornar -1. Teste a função 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 função ProcuraBinaria (int *v, int n, int c) que implemente o seguinte algoritmo: seja m o valor do elemento que ocupa a posição “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 função deve retornar seu índice no vetor; se c for menor que m, a procura deve continuar apenas na primeira “metade” do vetor. Implemente a função usando comandos iterativos, como for ou while. Teste a função com vetores e chaves de procura gerados aleatoriamente.

6. Considere a seguinte definição rigorosa para a função mdc, que calcula o máximo 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 máximo divisor comum de dois valores a e b dados. Considerando os valores a = 12 e b = 40, exibir a sequência de chamadas à função mdc e o valor final calculado.

Aula 09:

1. Considerando a representação de polinômios implementada no programa p28.c, escreva funções para calcular a soma e a subtração de dois polinômios. Escreva também uma função para determinar o valor de um polinômio em um ponto x dado e uma função para determinar a derivada de ordem n de um polinômio.

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 característica: cada linha i (i = 0, ..., m-1) da matriz armazene a representação binária de i usando n bits, com 1 bit em cada coluna.

5. Escreva uma função 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 função Encontra (c, n, v) que retorna o número de elementos iguais à “chave de procura” c existentes no vetor v de n elementos. Teste a função para vetores e valores de

(7)

Aula 10:

1. Modifique o programa p36.c de modo a permitir que um determinado aluno possa ser excluído do arquivo.

4. Um banco armazena no arquivo CLIENTES.TXT as seguintes informações: número do cliente (int) nome do cliente (string), saldo (float). Implemente um programa que:

- Leia o número do cliente;

- Recupere as informações do cliente no arquivo;

- Pergunte qual o tipo de operação (depósito ou saque) e o valor envolvido; - Atualize o saldo do cliente.

O programa deve repetir sua execução enquanto o usuário desejar.

5. Modifique o programa do exercício 4 de modo a considerar que o arquivo contém também o limite de crédito do cliente (float). O limite de crédito é o máximo que o cliente pode ter de saldo negativo. As seguintes opções de uso do programa devem estar disponíveis:

(A)bertura de Conta (D)epósito

(S)aque

(L)istagem de Saldo (F)im

Note que a opção S deverá verificar se o saque é possível, dado o saldo disponível e o limite de crédito do cliente.

7. Uma empresa organizou uma pesquisa de opinião para determinar o sucesso de seus produtos (os quais estão 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 número de dois produtos. O arquivo PESQUISA.TXT armazena os dados coletados, ou seja: sexo da pessoa pesquisada (char) , faixa etária (int), número do primeiro produto (int) e número do segundo produto (int). Implemente um programa que usa este arquivo para gerar o seguinte relatório:

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)

(8)

Aula 11:

1. Modifique o programa p38.c de modo a permitir a emissão de um extrato da conta, contendo todos os depósitos e saques efetuados. Utilize um novo arquivo para armazenar os dados dos depósitos e saques efetuados na conta.

2. Modifique o programa p38.c de modo a permitir a exclusão de uma conta. 3. Refaça os exercícios da aula passada, considerando os arquivos como binários.

Referências

Documentos relacionados

O objetivo é comunicar ao leitor a experiência acumulada pelo autor (ou pelo grupo) na realização do trabalho e os resultados obtidos. Assim, este relatório reveste-se de extrema

Foram admitidas as seguintes simplificações, que podem oscilar e assim modificar um determinado valor, para mais ou para menos, e que o interessado em um caso

3259 21 Animação e dinamização de actividades lúdico-expressivas - expressão musical 50 3260 22 Animação e dinamização de actividades lúdico-expressivas -

Seja o operador linear tal que. Considere o operador identidade tal que. Pela definição de multiplicação por escalar em transformações lineares,. Pela definição de adição

Chora Peito Chora Joao Bosco e Vinicius 000 / 001.. Chão De Giz Camila e

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

2.2.3 Efeitos prejudiciais do fitato Embora a presença do fitato seja desejada para a maioria dos alimentos vegetais, por ser uma importante fonte de fósforo e outros

The sciatic nerve of rats is a reliable model for studying different kinds of injuries and treatment methods, with crushing injuries being one of the preferred types,