Lista 1 – Fundamentos de programação em C 1) Faça um programa em C que solicite um número inteiro e escreva o seu sucessor. 2) Faça um programa em C que solicite um número decimal e apresente o dobro deste número. 3) Faça um programa em C que solicite dois números decimais e apresente o resultado da multiplicação entre os números. 4) Faça um programa em C que solicite o preço de um produto e apresente o valor dele com 10% de desconto. 5) Faça um programa em C 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 em C que leia dois números inteiros e apresente o resto da divisão dos números informados. 8) Faça um programa em C que solicite um número e apresente a raiz quadrada deste número. 9) Faça um programa em C que solicite um número e apresente o cubo deste número. 10) Faça um programa em C que leia 3 notas de um aluno e apresente a média das notas deste aluno. 11) Faça um programa em C 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 em C 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 em C 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 em C 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 em C que solicite o valor total da compra e o valor percentual de desconto. Apresente na tela o valor final. 16) Faça um programa em C 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 em C 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 em C que leia dois números e apresente na tela o maior número informado. 2) Faça um programa em C que leia um número e informa se ele é positivo ou negativo. 3) Faça um programa em C que leia um número e informa se ele é par ou ímpar. 4) Faça um programa em C 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 em C que leia três número e apresenta na tela o maior número. 6) Faça um programa em C 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 em C que leia três números e os exiba em ordem crescente(do menor para o maior). 8) Faça um programa em C 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 em C 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 Até 3 anos (inclusive) 4 a 6 anos 7 a 10 anos 11 a 13 anos 14 a 15 anos 16 a 18 anos 19 anos ou mais Categoria Não participa A B C D E Não participa 11) Considerando a tabela de INSS abaixo, faça um programa em C 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 em C 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 em C 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 em C que apresente a tabuada do número 3. 2) Faça um programa em C que escreva na tela todos os números entre 5 e 50. 3) Faça um programa em C que leia 50 números. Para cada número lido informar se ele é par ou ímpar. 4) Faça um programa em C que leia 50 números e encontre o maior número informado. 5) Faça um programa em C que leia 50 número e encontro o menor número informado. 6) Faça um programa em C que leia 50 números e encontra a diferença entre o maior e o menor número informado. 7) Faça um programa em C que leia 50 números e conto quantos números são pares. 8) Faça um programa em C que leia um número e apresente na tela a tabuada deste número. 9) Faça um programa em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C, 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 em C 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 em C 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 em C 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 em C que leia um vetor com 10 elementos e mostre-os na ordem inversa. 3) Faça um programa em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C que leia uma matriz 4 X 4 e encontre o menor valor contido na matriz e sua posição. 3) Faça um programa em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C que leia uma quantidade indeterminada de nomes, e apresente o primeiro nome considerando ordem alfabética. 6) Faça um programa em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 Escrever a definição da estrutura produto. b) Declarar o vetor estoque do tipo da estrutura definida acima, de tamanho 100 e global. a) 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) 2 área (em m ) número de moradores valor (a ser pago no mês) Definir a estrutura acima. b) Declarar um vetor de estruturas (global), supondo que o condomínio tem 40 apartamentos. a) 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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) b) c) d) Inserir novo gado. Devolver a quantidade total de leite produzida por semana na fazenda. Devolver a quantidade total de alimento consumido por semana na fazenda. 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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 em C 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.