lista 1 fundamentos de programação - fcamargo.yolasite.com de exercicios... · lista 3 –...
TRANSCRIPT
Lista 1 – Fundamentos de programação
1) Faça um programa que solicite um número inteiro e escreva o seu sucessor.
2) Faça um programa que solicite um número decimal e apresente o dobro deste número.
3) Faça um programa que solicite dois números decimais e apresente o resultado da
multiplicação entre os números.
4) Faça um programa que solicite o preço de um produto e apresente o valor dele com 10% de
desconto.
5) Faça um programa que solicite o número de uma medida em metros e imprima essa medida
em centímetros e milímetros.
6) Faça um programa que solicite o raio de uma esfera e então calcule o seu volume e a sua
área. Considere o “pi” como sendo 3.14.
V = A = 4 * pi * r2
7) Faça um programa que leia dois números inteiros e apresente o resto da divisão dos
números informados.
8) Faça um programa que solicite um número e apresente a raiz quadrada deste número.
9) Faça um programa que solicite um número e apresente o cubo deste número.
10) Faça um programa que leia 3 notas de um aluno e apresente a média das notas deste
aluno.
11) Faça um programa que leia uma temperatura em graus Celsius e apresente a temperatura
em graus Fahrenheit. Formula: F = (9*C+160.0)/5.0.
12) Faça um programa que receba um número inteiro de segundos e apresenta a quantidade
correspondente em horas, minutos e segundos.
Exemplo: 3987 segundos corresponde a: 1 hora, 6 minutos e 27 segundos.
13) Faça um programa que receba um número inteiro de dias e apresenta a quantidade
correspondente em anos, meses e dias. Considere que todos os meses possuem 30 dias e que
o ano possua 360 dias.
Exemplo: 3997 dias corresponde a: 11 anos, 1 mês e 7 dias.
14) Faça um programa que leia no nome de uma pessoa e o ano que nasceu. O programa deve
apresentar na tela a seguinte mensagem: “[Nome da pessoa], você já viveu [Idade da pessoa]”.
15) Faça um programa que solicite o valor total da compra e o valor percentual de desconto.
Apresente na tela o valor final.
16) Faça um programa que leia o dia, mês e ano atual e o dia, mês e ano de nascimento do
usuário. O programa deve imprimir quantos dias o usuário já viveu.
17) Uma matriz 2x2 é composta por duas linhas e duas colunas, conforme imagem abaixo:
A = |
|
Sabendo que o determinante da matriz acima pode ser calculado pela seguinte fórmula:
D = a11 x a22 – a12 x a21
Faça um programa que leia os elementos da matriz e então apresente na tela o seu
determinante.
Lista 2 – Estrutura de decisão
1) Faça um programa que leia dois números e apresente na tela o maior número
informado.
2) Faça um programa que leia um número e informa se ele é positivo ou negativo.
3) Faça um programa que leia um número e informa se ele é par ou ímpar.
4) Faça um programa que leia a média de um aluno e informe se ele está aprovado
(média maior ou igual a 7,0) ou reprovado (média inferior a 7,0).
5) Faça um programa que leia três número e apresenta na tela o maior número.
6) Faça um programa que leia três números e apresente na tela o resultado da subtração
entre o maior número com o menor número.
7) Faça um programa que leia três números e os exiba em ordem crescente(do menor
para o maior).
8) Faça um programa que solicite dois números e apresente o resultado da divisão.
Importante: um número não pode ser dividido por 0. O programa deve fazer essa
verificação.
9) Faça um programa que leia o valor total da compra e a forma de pagamento (1 – A
vista, 2 – Parcelado em duas vezes e 3 – Parcelado em 3 vezes) e apresente no final o
valor total da compra. Sabendo que para pagamento a vista há um desconto de 5%,
em duas vezes há um acréscimo de 10% e em três vezes há um acréscimo de 15%.
10) Em uma competição de natação os atletas são classificados em categorias de acordo
com a sua idade. Faça um programa que leia a idade do atleta e apresente na tela em
qual categoria ele deve competir.
Idade Categoria
Até 3 anos (inclusive) Não participa
4 a 6 anos A
7 a 10 anos B
11 a 13 anos C
14 a 15 anos D
16 a 18 anos E
19 anos ou mais Não participa
11) Considerando a tabela de INSS abaixo, faça um programa que leia o salário de um
funcionário e apresente na tela o valor do desconto de INSS.
Salário % de contribuição
Até 1.247,70 8,00
De 1.247,71 até 2.079,50 9,00
De 2.079,51 até 4.159,00 11,00
OBS: Se a pessoa ganhar um salário superior a R$4.159,00 ela irá pagar de INSS 11% de
R$4.159,00
12) Utilizando a estrutura "switch-case" faça um programa que leia um número entre 1 e
12 e então apresente o mês relativo. Exemplo: 01 - Janeiro; 07 - Julho. Caso o usuário
informe um valor fora do intervalo o sistema deve apresentar uma mensagem de erro.
13) Faça um programa que leia dois números e apresente na tela as seguintes opções ao
usuário:
1 - Somar
2 - Subtrair
3 - Multiplicar
4 - Dividir
O sistema deve apresentar na tela o resultado da operação selecionada.
14) Faça um programa para calcular o salário de um funcionário. Deverão ser lidos:
O salário bruto;
O número de dependentes.
O programa deve apresentar o salário líquido conforme regra abaixo:
Salário Líquido = Salário Bruto – Desconto INSS + (15,00 * Número de
Dependentes) + Auxílio Passagem (40,00) + Auxílio Refeição (100,00).
Tabela Incidência INSS
Salário Bruto % INSS
Até R$ 300,00 9
R$ 300,01 - R$ 700,00 10
Acima de R$ 700,00 11
Lista 3 – Estrutura de repetição
1) Faça um programa que apresente a tabuada do número 3.
2) Faça um programa que escreva na tela todos os números entre 5 e 50.
3) Faça um programa que leia 50 números. Para cada número lido informar se ele é
par ou ímpar.
4) Faça um programa que leia 50 números e encontre o maior número informado.
5) Faça um programa que leia 50 número e encontro o menor número informado.
6) Faça um programa que leia 50 números e encontra a diferença entre o maior e o
menor número informado.
7) Faça um programa que leia 50 números e conto quantos números são pares.
8) Faça um programa que leia um número e apresente na tela a tabuada deste
número.
9) Faça um programa que leia dois números e então apresente na tela todos os
números que estão entre os valores informados.
10) Faça um programa que leia dois números e então apresente na tela a soma dos
números que estão entre os valores informados.
11) Faça um programa que solicite 10 números e então apresente a média dos
números informados.
12) Faça um programa que calcule a média da nota dos alunos de uma classe. O
programa deve inicialmente perguntar quantos alunos existem e então solicitar
as notas para calcular a média.
13) Faça um programa que solicite para o usuário uma série de números decimais. O
programa deve parar de solicitar quando o usuário digitar um valor negativo. Ao
final o programa deve informar quantos números foram digitados e qual a soma
dos números. OBS: ignorar o valor negativo na contagem e na soma.
14) Faça um programa que leia um número e conte por quantos números ele é
divisível. O programa deve apresentar essa informação ao final.
15) Um número primo é aquele que é divisível somente por ele mesmo ou por um.
Faça um programa que leia um número e informe se ele é ou não primo. O
usuário deve ter a opção de repetir quantas vezes quiser esta operação.
16) Faça um programa que leia um número e apresente na tela o seu fatorial.
Exemplo:
Fatorial de 5 = 5 x 4 x 3 x 2 x 1 = 120
Fatorial de 4 = 4 x 3 x 2 x 1 = 24
17) O cardápio de uma casa de lanches é dado pela tabela abaixo:
Código Descrição Preço
101 Misto quente R$ 2,30
102 Hambúrguer R$ 2,60
103 Suco natural R$ 3,00
104 Cerveja R$ 4,50
105 Refrigerante R$ 3,00
Faça um programa, que leia os códigos dos itens adquiridos por um consumidor e a
quantidade correspondente, calcule e mostre o valor a pagar. O final da entrada do
pedido é sinalizado com um código zero.
18) Foi realizada uma pesquisa em Joinville onde se perguntou a cada um dos
entrevistados o seguinte:
Clube de preferência (1 – JEC, 2 – AVAÍ, 3 – OUTROS);
Salário mensal;
Naturalidade (1 – Joinville, 2 - Outras cidades).
Faça um programa que mostre:
a) o número de torcedores por clube;
b) médias salariais dos torcedores do Avaí e do Jec;
c) o número de pessoas nascidas em Joinville que torcem para o Avaí;
d) o número de pessoas entrevistadas.
Obs: o número de pessoas entrevistadas é desconhecido. Ao termino da entrevista
o sistema deve perguntar se há uma nova pessoa para ser entrevistada
19) Um viajante fará uma viagem de carro entre duas cidades e ao término deseja
saber:
Quantas vezes foram necessárias abastecer;
Quantos litros foram consumidos para percorrer a distancia indicada;
Quantos litros restaram no tanque após a chegada ao destino.
Faça um programa que leia a distância entre as duas cidades, a capacidade do tanque e o
consumo médio do veículo e calcule / mostre as informações solicitadas. O usuário deve
ter a opção de repetir quantas vezes quiser esta operação.
20) A prefeitura de uma cidade deseja fazer uma pesquisa entre seus habitantes.
Faça um programa para coletar dados sobre o salário e número de filhos de cada
habitante e após as leituras, escrever:
a) Média de salário da população
b) Média do número de filhos
c) Maior salário dos habitantes
d) Percentual de pessoas com salário menor que R$ 150,00
Obs.: O final das leituras dos dados se dará com a entrada de um “salário negativo”.
Lista 4 – Vetores
1) Faça um programa que leia um vetor com 6 elementos e os mostre. Em seguida,
conte quantos elementos têm valor negativo e mostre esta informação.
2) Faça um programa que leia um vetor com 10 elementos e mostre-os na ordem
inversa.
3) Faça um programa que leia um vetor com 100 números e um número qualquer.
Em seguida, substitua todos os valores do vetor iguais ao número informado por
0 e o mostre.
4) Faça um programa que leia um vetor com 80 elementos e mostre o valor do
menor e maior elementos e suas posições no vetor.
5) Faça um programa que leia uma série de N notas, e calcule quantas são 10%
acima da média e quantas são 10% abaixo.
6) Faça um programa que leia um conjunto de 30 valores numéricos inteiros e
distribua-os entre dois vetores, separando os números positivos e negativos.
Mostrar os vetores ao final do processamento.
7) Faça um programa que leia um vetor com 20 elementos e o mostre. Em seguida,
troque o primeiro elemento com o último, o segundo com o penúltimo, etc, até o
décimo com o décimo primeiro e mostre o vetor assim modificado.
8) Faça um programa que leia um vetor com 20 elementos e o mostra. Em seguida,
troque o primeiro elemento com o décimo primeiro, o segundo com o décimo
segundo, etc, e mostre o vetor assim modificado.
9) Faça um programa que leia dois vetores com 10 elementos cada um e calcule o
produto escalar entre eles, mostrando os vetores lidos e o produto calculado. O
produto escalar é calculado da seguinte forma: cada valor do primeiro vetor deve
ser multiplicado pelo valor do elemento correspondente do segundo vetor e os
resultados devem ser somados. Exemplo:
u = [3, 5, 2] v = [2, 1, 5] então: u · v = 3 * 2 + 5 * 1 + 2 * 5
10) Faça um programa que leia dois vetores com 10 elementos cada. Considerando
cada vetor como sendo um conjunto, crie um terceiro vetor que seja a união dos
dois primeiros e o mostre.
11) Faça um programa que leia dois vetores com 10 elementos cada. Considerando
cada vetor como sendo um conjunto, crie um terceiro vetor que seja a
intersecção dos dois primeiros e o mostre.
12) Faça um programa que leia dois vetores com 10 elementos cada. Considerando
cada vetor como sendo um conjunto, crie um terceiro vetor que seja a diferença
(elementos do primeiro vetor que não existem no segundo vetor) dos dois
primeiros e o mostre.
13) Faça um programa que leia dois vetores com 10 elementos cada. Em seguida,
crie um terceiro vetor, que seja a soma dos dois primeiros, e um quarto, que seja
a diferença entre os dois primeiros, e os mostre.
14) Faça um programa que leia um vetor com 6 elementos, que é o resultado de um
sorteio da Sena. Em seguida leia outro vetor, também com 6 elementos, que é a
aposta de um apostador. Comparar os vetores e ao final mostrar a aposta, o
resultado e o número de acertos do apostador.
15) Faça um programa que leia um vetor A com 10 componentes distintos inteiros e
um vetor B com 5 componentes distintos inteiros e verifique se as seguintes afirmações
são verdadeiras ou falsas:
a) O vetor B está totalmente contido no vetor A; b) O vetor B está parcialmente contido no vetor A, isto é, existe alguma
componente de B em A; c) O vetor B não está nada contido no vetor A, isto é, não existe nenhuma
componente de B no vetor A.
16) Faça um programa que leia um vetor com 15 elementos e o mostre. A seguir,
ordene os elementos em ordem crescente e os mostre novamente.
Lista 5 – Matrizes
1) Faça um programa que leia duas matrizes 3 X 3 e gere uma terceira matriz com a soma dos elementos correspondentes de cada matriz.
2) Faça um programa que leia uma matriz 4 X 4 e encontre o menor valor contido na matriz e sua posição.
3) Faça um programa que leia uma matriz 6 X 4 e a mostre. Em seguida, calcule e mostre uma matriz modificada 6 X 5, sendo que os elementos da 5ª coluna são formados com o produto dos elementos da mesma linha.
4) Faça um programa que leia uma matriz 5 X 5 e a mostre. Em seguida, troque a segunda linha pela quinta e a primeira coluna pela quarta. Ao final, mostre a matriz resultante.
5) Uma empresa fabrica dois tipos de produtos, com os preços R$ 500,00 e R$ 650,00, respectivamente. Faça um programa que leia uma planilha contendo a quantidade vendida de cada produto por mês (considere apenas um ano). Em seguida, mostre as seguintes informações:
a) Mês com maior faturamento; b) Mês com maior quantidade de produtos vendidos; c) A média anual de venda de cada produto .
6) Faça um programa que leia uma matriz 3 X 2 e a mostre. Em seguida, determine e mostre sua transposta. (linha vira coluna e coluna vira linha)
7) Faça um programa que leia uma matriz quadrada de ordem 4 e um número qualquer. Em seguida, multiplique a diagonal principal por este número e mostre a matriz multiplicada.
8) Faça um programa leia duas matrizes de reais, com respectivos tamanhos 5 x 4 e 4 x 6, e imprima a matriz resultante A x B (multiplicação das matrizes), de tamanho 5 x 6.
9) Faça um programa que leia duas matrizes 3 X 2 e mostre, em formato bidimensional, a matriz resultante da seguinte regra:
Se i ≤ j C(i, j) = A(i, j), senão C(i, j) = B(i, j). Onde C = matriz resultante, A = matriz 1 e B = matriz 2.
10) Faça um programa que leia uma matriz 5 X 5 e calcule e mostre a soma dos elementos abaixo da diagonal principal da matriz, incluindo os elementos da própria diagonal principal.
Lista 6 – Cadeia de caracteres
1) Faça um programa que leia uma string de no máximo 80 posições e apresente as
seguintes informações:
a) Tamanho da string
b) Quantidade caracteres números
2) Faça um programa que leia duas strings e informe o tamanho de cada string
acompanhado de uma frase que diga se as duas strings são iguais ou diferentes.
3) Faça um programa que leia um nome e em seguida o mostre de trás para frente
utilizando somente letras maiúsculas. O programa não pode permitir que sejam
informados números.
4) Faça um programa que leia duas strings, sendo a primeira o nome de uma pessoa,
e a segunda seu sobrenome. Concatenar essas strings em uma terceira string,
obedecendo o seguinte formato: sobrenome, vírgula, espaço, primeiro nome.
Apresentar a string concatenada.
5) Faça um programa que leia uma quantidade indeterminada de nomes, e apresente
o primeiro nome considerando ordem alfabética.
6) Faça um programa que receba uma string como parâmetro e imprima quantas
palavras (separadas por espaço em branco) o mesmo contém.
Lista 7 – Funções
1) Escreva um programa que leia 5 valores inteiros e imprima para cada um o seu
correspondente valor absoluto. Para obter o valor absoluto do número utilize a
função “Absoluto” especificada abaixo:
Nome: Absoluto
Descrição: Retorna o valor absoluto do número fornecido.
Entrada: int n
Saída: (int) O respectivo valor absoluto de n.
Observação:
-O valor absoluto de 10 é 10.
-O valor absoluto de -10 é 10.
2) Escreva um programa que leia um número indeterminado de valores que
representam raios de círculos. Para cada valor informado imprimir a área e seu
perímetro. O programa será encerrado ao ser fornecido para o raio um valor
negativo. Para obter o valor da área do círculo o programa deverá chamar a
função “AreaCirculo”. Para obter o valor do seu perímetro o programa deverá
chamar a função “CompCircunferencia”.
Nome: AreaCirculo
Descrição: Retorna a área do círculo.
Entrada: float Raio
Saída: (float) A área do círculo
Nome: CompCircunferencia
Descrição: Retorna o comprimento da circunferência (perímetro).
Entrada: float Raio
Saída: (float) O comprimento da circunferência
3) Escreva um programa para ler 5 pares de valores (considere que serão
informados apenas valores positivos). Para cada par lido deve ser impresso o
valor do maior elemento do par ou a frase "Eles são iguais" se os valores do par
forem iguais. Para obter o maior elemento do par utilize a função
“MaiorNumero”.
Nome: MaiorNumero
Descrição: Retorna o maior elemento entre 2 valores positivos. Se eles forem iguais
deve ser retornado o valor -1.
Entrada: (int) Dois valores positivos.
Saída: (int) O maior deles ou -1 se eles forem iguais.
Observação: Considere que os valores de entrada são sempre positivos.
4) Escreva um programa para ler 5 números inteiros positivos (utilize a função
“LePositivo”). Para cada valor lido escrever a soma dos inteiros de 1 ao número
informado. O resultado do cálculo desse somatório deve ser obtido através da
função “Somatorio”.
Nome: LePositivo
Descrição: Faz a leitura de um valor. Se ele for negativo ou zero, a leitura deve ser
repetida até que o valor lido seja positivo.
Entrada: Nenhuma.
Saída: (int) o valor lido.
Nome: Somatório
Descrição: Calcula o somatório dos inteiros de 1 ao número fornecido como entrada.
Entrada: (int) Número limite do somatório.
Saída: (int) O valor do somatório.
5) Escreva um programa que leia 5 números inteiros positivos (utilizar
“LePositivo”). Para cada número informado escrever a soma de seus divisores
(exceto ele mesmo). Utilize a função “SomaDivisores” para obter a soma.
Nome: SomaDivisores
Descrição: Calcula a soma dos divisores do número informado (exceto ele mesmo).
Entrada: Um número inteiro e positivo.
Saída: A soma dos divisores.
Exemplo: Para o valor 8: 1+2+4 = 7
6) Escreva um programa que imprima na tela os números primos existentes entre 1
e 100. Para verificar se um número é primo utilize a função “EhPrimo”.
Nome: EhPrimo
Descrição: Verifica se um número é o ou não primo.
Entrada: (int) um número inteiro.
Saída: (int) 1 se o número de entrada for primo e 0 caso contrário.
7) Escreva um programa que leia 5 pares de valores positivos (“LePositivo”).
Imprima se os elementos de cada par são números amigos (ou não). Dois
números A e B são amigos se a soma dos divisores de A excluindo A é igual a B
e a soma dos divisores de B excluindo B é igual a A. Para verificar se dois
números são amigos utilize a função “SaoAmigos”.
Nome: SaoAmigos
Descrição: retorna 1 se os 2 números de entrada forem amigos, 0 caso contrário.
Entrada: (int) Dois números inteiros positivos.
Saída: (int) 1 se os dois números são amigos, 0 caso contrário.
Observação: Utilize a função SomaDividores do exercício anterior.
Exemplo:
220 e 284 são amigos, pois:
220: 1+2+4+5+10+11+20+22+44+55+110=284
284: 1+2+4+71+142=220
1184 e 1210 também são amigos.
8) Escreva um programa que leia as medidas dos lados de 5 triângulos. Para cada
triângulo imprimir a sua classificação (Não é triângulo, Triângulo Equilátero,
Isósceles ou Escaleno).O programa deve aceitar apenas valores positivos para as
medidas dos lados (utilizar “LePositivo”). Para obter o código da classificação
utilize a função “TipoTriangulo”.
Nome: TipoTriangulo
Descrição: A partir das medidas dos lados de um triângulo, verifica o tipo do triângulo.
Entrada: (int) 3 valores
Saída: (int) 0 se não formam um triângulo.
1 se for um triângulo equilátero.
2 se for um triângulo isósceles.
3 se for um triângulo escaleno.
Para verificar se as medidas formam um triângulo chamar a função EhTriangulo.
Nome: EhTriangulo
Descrição: Verifica se as 3 medidas informadas permitem formar um triângulo. Para
formar um triângulo é necessário que a medida de cada lado seja menor que a soma dos
outros 2.
Entrada: (int) 3 valores.
Saída: (int) 1 se os 3 valores formarem um triângulo e 0 caso contrário.
9) Para evitar erros de digitação em números de grande importância, como código
de uma conta bancária, geralmente se adiciona ao número um dígito verificador.
Por exemplo, o número 1841 é utilizado normalmente como 18414, onde o 4 é o
dígito verificador. Ele é calculado da seguinte forma:
a) Cada algarismo do número é multiplicado por um peso começando de 2 da direita
para a esquerda.
Para cada algarismo o peso é acrescido de 1. Soma-se os produtos obtidos.
1x5 + 8x4 + 4x3 + 1x2 = 51
b) Calcula-se o resto da divisão desta soma por 11:
51 % 11 = 7
c) Subtrai-se de 11 o resto obtido:
11 - 7 = 4
d) Se o valor obtido for 10 ou 11, o dígito verificador será o 0, nos outros casos, o dígito
verificador é o próprio valor encontrado.
Escreva um programa que leia um número indeterminado de valores inteiros de 1 a 999.
Para cada número imprima o seu correspondente dígito verificador. O programa é
encerrado ao ser fornecido um número fora da faixa estabelecida (1 a 999). Para obter o
valor do dígito verificador utilize a função “CalculaDigito”.
Nome: CalculaDigito
Descrição: Calcula o dígito verificador de um número.
Entrada: (int) Um valor inteiro.
Saída: (int) O dígito verificador do número.
10) Escreva um programa que leia um número indeterminado de valores inteiros de
10 a 9999 onde o último algarismo representa o seu dígito verificador e imprima
para cada número uma mensagem indicando se ele está correto ou não. O
programa é encerrado ao ser fornecido um número fora da faixa estabelecida (10
a 9999). Utilize a função “DigitoCorreto” para verificar se o número está
correto.
Nome: DigitoCorreto
Descrição: Retorna 1 se o valor de entrada possui o dígito verificador correto e 0 caso
contrário.
Entrada: (int) Um número inteiro.
Saída: (int) 1 se o número possui o dígito verificador correto ou 0 caso contrário.
Utilizar as funções abaixo: ObtemDigito e ObtemNumero.
Nome: ObtemDigito
Descrição: Separa o último algarismo (a unidade) do número.
Entrada: (int) Um número inteiro
Saída: (int) O valor da unidade do número (o último algarismo)
Ex: Para a entrada 1823 a saída será 3
Nome: ObtemNumero
Descrição: Separa o número do dígito verificador.
Entrada: (int) Um número inteiro.
Saída: (int) O número sem o valor da unidade.
Ex: Para a entrada 1823 a saída será 182
Lista 8 – Estrutura
1) Defina uma estrutura que irá representar bandas de música. Essa estrutura deve
ter o nome da banda, que tipo de música ela toca, o número de integrantes e em
que posição do ranking essa banda está dentre as suas 5 bandas favoritas.
a) Crie um looping para preencher as 5 estruturas de bandas criadas no exemplo
passado. Após criar e preencher, exiba todas as informações das bandas/estruturas.
b) Crie uma função que peça ao usuário um número de 1 até 5. Em seguida, seu
programa deve exibir informações da banda cuja posição no seu ranking é a que foi
solicitada pelo usuário.
c) Crie uma função em C que peça ao usuário um tipo de música e exiba as bandas com
esse tipo de música no seu ranking.
d) Crie uma função que peça o nome de uma banda ao usuário e diga se ela está entre
suas bandas favoritas ou não.
e) Agora junte tudo e crie uma aplicação em que exibe um menu com as opções de
preencher as estruturas e todas as opções das questões passadas.
2) Seja uma estrutura para descrever os carros de uma determinada revendedora,
contendo os seguintes campos:
Marca: string de tamanho 15
Ano: inteiro
Cor: string de tamanho 10
Preço: real
a) Escrever a definição da estrutura carro.
b) Declarar o vetor “vetcarros” do tipo da estrutura definida acima, de tamanho 20 e
global.
Crie um menu para:
c) Definir um bloco de programa para ler o vetor “vetcarros”.
d) Definir um bloco de programa que receba um preço e imprima os carros (marca, cor
e ano) que tenham preço igual ou menor ao preço recebido.
e) Defina um bloco de programa que leia a marca de um carro e imprima as informações
de todos os carros dessa marca (preço, ano e cor).
f) Defina um bloco de programa que leia uma marca, ano e cor e informe se existe ou
não um carro com essas características. Se existir, informar o preço.
3) Seja uma estrutura para descrever os livros de uma loja, contendo os seguintes
campos:
Título: string de tamanho 15;
Autor: string de tamanho 20
Estilo: string de tamanho 10
Código: inteiro
Preço: real
a) Escrever a definição da estrutura livro;
b) Declarar uma variável global para armazenar 50 livros;
c) Criar uma função que leia um livro. A função deve receber como entrada a posição
em que será armazenado o livro.
d) Criar uma função que imprime os dados do livro. A função deve receber a posição
que o livro está armazenado.
e) Fazer um programa utilizando as funções acima que solicite os 50 livros e então os
imprima na tela.
4) Elaborar um algoritmo que auxilie no controle de uma fazenda de gado que
possuí um total de 2000 cabeças de gado. A base de dados é formada por um
conjunto de estruturas (registros) contendo os seguintes campos referente a cada
cabeça de gado:
código: código da cabeça de gado,
leite: número de litros de leite produzido por semana,
alim: quantidade de alimento ingerida por semana - em quilos,
nasc: data de nascimento - mês e ano,
abate: ‘N’ (não) ou ‘S’ (sim).
O campo nasc. é do tipo struct data que por sua vez, possui dois campos:
o mês
o ano
Elaborar funções para:
a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em
um vetor de estruturas.
b) Preencher o campo abate, considerando que a cabeça de gado irá para o abate
caso:
tenha mais de 5 anos, ou;
produza menos de 40 litros de leite por semana, ou;
produza entre 50 e 70 litros de leite por semana e ingira mais de 50 quilos de
alimento por dia.
Crie o menu de opções para:
c) Devolver a quantidade total de leite produzida por semana na fazenda.
d) Devolver a quantidade total de alimento consumido por semana na fazenda.
e) Devolver a quantidade total de leite que vai ser produzido por semana na
fazenda, após o abate.
f) Devolver a quantidade total de alimento que vai ser consumido por semana na
fazenda, após o abate.
g) Devolver número de cabeças de gado que iram para o abate.
h) Sair do programa.
5) Seja um algoritmo para controlar os produtos do estoque de um supermercado.
Para cada produto, tem-se os seguintes campos:
nome: string de tamanho 15
setor: caracter
quantidade: inteiro
preço: real //preço por unidade do produto
a) Escrever a definição da estrutura produto.
b) Declarar o vetor estoque do tipo da estrutura definida acima, de tamanho 100 e
global.
Crie um menu para:
c) Definir um bloco de instruções para ler o vetor estoque.
d) Definir um bloco de instruções que receba um setor e devolva o número de
diferentes produtos desse setor.
e) Definir um bloco de instruções que calcule e devolva o total em estoque de
produtos do supermercado.
f) Sair do Programa.
6) Seja um sistema destinado a controlar despesas e dados de um condomínio de
apartamentos. Os dados de cada apartamento são armazenados em um vetor de
estruturas. Para cada apartamento tem-se os seguintes dados:
nome (do responsável)
número (do apartamento)
área (em m2 )
número de moradores
valor (a ser pago no mês)
a) Definir a estrutura acima.
b) Declarar um vetor de estruturas (global), supondo que o condomínio tem 40
apartamentos.
Crie um menu para:
c) Escrever um bloco de instruções responsável por ler o vetor acima, exceto o
campo valor.
d) Escrever um bloco de instruções que retorne a área total do condomínio.
e) Escrever um bloco de instruções que receba a área total do condomínio; leia o
total de despesas do mesmo e calcule para cada apartamento o valor a ser pago
no mês. Esse valor é proporcional à área do apartamento.
f) Fazer um bloco de instruções para imprimir os dados do apartamento que tem o
maior número de moradores. Em caso de haver mais de um, imprimir todos.
g) Escrever um bloco de instruções para sair do programa.
Lista 9 – Recursividade
1) Vários algoritmos em computação usam a técnica de “Dividir para Conquistar”:
basicamente eles fazem alguma operação sobre todos os dados, e depois dividem
o problema em sub-problemas menores, repetindo a operação. Uma equação de
recorrência típica para esse tipo de algoritmo é mostrada abaixo. Faça um
programa para resolver essa equação de recorrência.
T(n) = 2T(n/2) + n;
T(1) = 1;
2) O máximo divisor comum (MDC) de dois números inteiros x e y pode ser
calculado usando-se a seguinte definição recursiva:
Faça um programa que calcule o MDC usando a definição acima.
3) Pode-se calcular o resto da divisão, MOD, de x por y, dois números inteiros,
usando-se a seguinte definição:
Faça um programa que calcule o MOD usando a definição acima.
4) Pode-se calcular o quociente da divisão, DIV, de x por y, dois números inteiros,
usando-se a seguinte definição:
Faça um programa que calcule o DIV usando a definição acima.
5) A função de Ackermann é definida para valores inteiros e não negativos m e n
da seguinte forma:
Faça um programa que calcule função de Ackermann usando a definição acima.
6) Escreva uma função recursiva em C que calcule o número de grupos distintos
com k pessoas que podem ser formados a partir de um conjunto de n pessoas. A
definição abaixo da função Comb(n,k) define as regras:
7) Faça uma função recursiva que calcule e retorne o fatorial de um número inteiro
N.
8) Faça uma função recursiva que calcule e retorne o N-ésimo termo da sequência
Fibonacci. Alguns números desta sequência são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
89...
9) A multiplicação de dois números inteiros pode ser feita através de somas
sucessivas. Proponha um algoritmo recursivo Multip_Rec(n1,n2) que calcule a
multiplicação de dois inteiros
Lista 10 – Ponteiros
1) Qual das instruções abaixo é correta para declarar um ponteiro para inteiro?
a) *int pti;
b) *pti;
c) &i;
d) int_pti pti;
e) int *pti;
2) Seja a seguinte sequência de instruções em um programa C:
int *pti;
int i = 10;
pti = &i;
Qual afirmativa é falsa?
a) pti armazena o endereço de i
b) *pti é igual a 10
c) Ao se executar *pti = 20; i passará a ter o valor 20
d) Ao se alterar o valor de i, *pti será modificado
e) pti é igual a 10
3) Na sequência de instruções abaixo:
float f;
float *pf;
pf = &f;
scanf("%f", pf);
a) Efetuamos a leitura de f
b) Não efetuamos a leitura de f
c) Temos um erro de sintaxe
d) Deveríamos estar usando &pf no scanf
e) Nenhuma das opções anteriores
4) Um ponteiro pode ser usado para dizer a uma função onde ela deve depositar o
resultado de seus cálculos. Escreva uma função hm que converta minutos em
horas-e-minutos. A função recebe um inteiro mnts e os endereços de duas
variáveis inteiras, digamos h e m, e atribui valores a essas variáveis de modo que
m seja menor que 60 e que 60*h + m seja igual a mnts. Escreva também uma
função main que use a função hm.
5) Faça um programa usando ponteiros que leia 5 números mostre em ordem
crescente. O programa deverá chamar a função ordena. Esta função irá receber o
endereço da memória dos 5 valores (n1, n2, n3, n4 e n5) e irá alterar seus valores
deixando os valores ordenados a partir do n1.
6) Escreva uma função mm que receba um vetor inteiro v[0..4] e os endereços de
duas variáveis inteiras, digamos min e max, e deposite nessas variáveis o valor
de um elemento mínimo e o valor de um elemento máximo do vetor. Escreva
também uma função main que use a função mm.
DICA: Declarar a função da seguinte forma:
void mm(int *v, int *min, int *max) {
…
}
Lista 11 – Alocação dinâmica de memória
1) Faça um programa utilizando alocação de memória dinâmica que solicite o total
de provas realizadas. As provas deverão ser armazenadas em um vetor de
números reais dinâmico. O programa deverá ler as notas e então calcular a média
das notas.
2) Para o programa anterior, além de calcular a média o programa deve passar a
informar quantas notas foram acima da média, abaixo da média e exatamente
igual a média.
3) Continuando o exercício anterior, o programa deverá armazenar em um vetor
dinâmico todas as notas acima da média, abaixo da média e igual a média. O
programa deverá exibir ao usuários essas informações.
4) Faça um programa que declare a estrutura “Livro”. A estrutura será composta
pelo Titulo do livro, escritor, número de paginas e ano de publicação. Este
programa deverá conter um vetor dinâmico da estrutura livro. Os livros deverão
ser inseridos pelo usuário um a um e sempre que for concluído o cadastro de um
livro o sistema deve perguntar se o usuário deseja inserir um novo livro. Ao final
o programa deve exibir o total de livros inseridos.
5) Para o programa anterior, além de exibir o total de livros inseridos o programa
deverá agora exibir o(s) livro(s) mais antigo(s) (titulo e autor), o(s) livro(s) com
o maior número de página.
6) Acrescentar na estrutura do programa 5 o preço do livro e fazer com que o
usuário digite essa informação no momento de inserir um livro. Além das saídas
anteriores, o programa deverá agora informar o(s) livro(s) mais caro(s) (titulo e
autor).
7) Elaborar um programa que auxilie no controle de uma fazenda de gado. A
quantidade de gados será determinada pelo usuário e por isso será armazenado
em uma variável com alocação dinâmica. A base de dados é formada por um
conjunto de estruturas (registros) contendo os seguintes campos referente a cada
cabeça de gado:
código: código da cabeça de gado,
leite: número de litros de leite produzido por semana,
alim: quantidade de alimento ingerida por semana - em quilos,
nasc: data de nascimento - mês e ano,
abate: ‘N’ (não) ou ‘S’ (sim).
O campo nasc. é do tipo struct data que por sua vez, possui dois campos:
o mês
o ano
Elaborar funções para:
a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em
um vetor de estruturas.
b) Preencher o campo abate, considerando que a cabeça de gado irá para o abate
caso:
tenha mais de 5 anos, ou;
produza menos de 40 litros de leite por semana, ou;
produza entre 50 e 70 litros de leite por semana e ingira mais de 50 quilos de
alimento por dia.
Crie o menu de opções para:
a) Inserir novo gado.
b) Devolver a quantidade total de leite produzida por semana na fazenda.
c) Devolver a quantidade total de alimento consumido por semana na fazenda.
d) Devolver a quantidade total de leite que vai ser produzido por semana na
fazenda, após o abate.
e) Devolver a quantidade total de alimento que vai ser consumido por semana na
fazenda, após o abate.
f) Devolver número de cabeças de gado que iram para o abate.
g) Sair do programa.
Lista 12 – Pilha
1) Utilizando pilhas, faça um programa que armazene 10 números. O programa
deve ir solicitando números para o usuário até que a pilha esteja cheia. Após
inserir os 10 valores o sistema deve imprimir os elementos da pilha.
2) Utilizando pilhas, faça um programa que armazene 10 números. O programa
deve dar a opção para o usuário inserir um valor na pilha e também remover um
valor da pilha. Caso o usuário tente inserir um valor que excede o tamanho da
pilha o sistema deve exibir que a pilha está cheia. Caso o usuário tente remover
um valor da pilha e ela esteja vazia o sistema deve informar que a pilha está
vazia.
3) Continuando o exercício anterior, faça com que o programa apresente a opção de
exibir os valores da pilha. Selecionando essa opção o sistema deve exibir os
números digitados.
4) Faça um programa que armazene em uma estrutura o modelo, placa e ano de um
carro. O programa deve criar uma pilha capaz de armazenar até 10 carros e ter a
função incluir novo elemento, excluir ultimo e listar todos os registros.
Lista 13 – Fila
1) Utilizando o conceito de fila simples, faça um programa que armazene até 10
valores na fila. O programa deve ter a opção de incluir novo elemento, excluir
ou ainda listar os elementos da fila. O programa deverá verificar se a fila está
cheia ao incluir um novo elemento ou então se está vazia ao excluir um
elemento.
2) Faça o programa anterior utilizando fila simples dinâmica.
3) Faça o programa 1 utilizando fila simples reordenada.
4) Faça o programa 1 utilizando fila circular.
5) Elaborar um programa que controle o estoque de uma empresa. O programa
deve conter um menu com as seguintes opções:
1 – Exibir estoque;
2 – Dar entrada no estoque;
3 – Remover item do estoque.
Regras:
Capacidade do estoque é infinita;
Para cada entrada no estoque deve-se armazenar o número da nota fiscal e a
quantidade comprada;
Para remover o item do estoque deve-se informar apenas a quantidade. Deve ser
removido do mais antigo para o mais atual;
Validar se há produto em estoque antes de remover;
Para exibir o estoque deve-se listar a nota fiscal e a quantidade de itens daquela
nota disponível.
Exemplo:
Lista 14 – Lista simplesmente encadeada
1) Utilizando o conceito de lista simplesmente encadeada, faça um programa que
armazene em uma estrutura o RA do aluno, nome do aluno e a sua média. O
programa deve ter a opção de incluir novo aluno, excluir ou ainda listar os
alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.
Lista 15 – Lista duplamente encadeada
1) Utilizando o conceito de lista duplamente encadeada, faça um programa que
armazene em uma estrutura o RA do aluno, nome do aluno e a sua média. O
programa deve ter a opção de incluir novo aluno, excluir ou ainda listar os
alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.
Lista 16 – Lista circular
1) Utilizando o conceito de lista circular, faça um programa que armazene em uma
estrutura o RA do aluno, nome do aluno e a sua média. O programa deve ter a
opção de incluir novo aluno, excluir ou ainda listar os alunos da lista.
2) Continuando o exercício 1, faça com que o aluno seja inserido em ordem
alfabética.
3) Continuando o exercício 2, faça com que ao excluir um aluno o sistema pergunte
qual o RA do aluno que ele deseja excluir e exclua o aluno selecionado.
4) Continuando o exercício 3, faça com que o sistema não permita incluir dois
alunos com o mesmo RA.
5) Continuando o exercício 4, faça com que o programa informe uma mensagem de
usuário não existente no momento da exclusão caso o aluno que o usuário tente
excluir não exista.
6) Com base no exercício 1, faça com que o aluno seja inserido em ordem
crescente de nota.