UDESC- Joinville DISCIPLINA: Linguagem de Programação TURMA: A SEMESTRE/ANO: 01/2014 SALA: F203 PROFESSORA: Rebeca Schroeder Freitas Aulas segunda-feira das 19hs às 22h30 LISTA DE EXERCÍCIOS Sumário 1. VARIÁVÉIS, OPERADORES E EXPRESSÕES............................................................................1 2. ESTRUTURAS DE CONTROLE – SELEÇÃO..............................................................................2 3. ESTRUTURAS DE CONTROLE – REPETIÇÃO..........................................................................3 4. FUNÇÕES........................................................................................................................................3 5. VETORES........................................................................................................................................4 6. PONTEIROS....................................................................................................................................5 7. E STRUTURA DE DADOS.............................................................................................................6 8. ARQUIVOS......................................................................................................................................7 1. VARIÁVÉIS, OPERADORES E EXPRESSÕES 1.1) Faça um programa que declare uma variável real, atribua a essa variável a expressão 154/254 e mostre o resultado que está armazenado na variável. Faça com que a precisão do resultado desta expressão seja mantida. 1.2) Escreva um programa para ler o raio de um círculo, calcular e escrever a sua área (Fórmula: πR 2 ). 1.3) Escreva um programa para ler uma temperatura em graus Fahrenheit, calcular e escrever o valor correspondente em graus Celsius (Fórmula: C F −32 = 5 9 ). 1.4) Escreva um programa para ler uma temperatura em graus Celsius, calcular e escrever o valor correspondente em graus Fahrenheit. 1.5) Escreva um programa para calcular e imprimir o número de lâmpadas necessárias para iluminar um determinado cômodo de uma residência. Dados de entrada: a potência da lâmpada utilizada (em watts), as dimensões (largura e comprimento, em metros) do cômodo. Considere que a potência necessária é de 18 watts por metro quadrado. 1.6) Escreva um programa para ler as dimensões de uma cozinha retangular (comprimento, largura e altura), calcular e escrever a quantidade de caixas de azulejos para se colocar em todas as suas paredes (considere que não será descontada a área ocupada por portas e janelas). Cada caixa de azulejos possui 1,5 m2. 1.7) Um motorista de táxi deseja calcular o rendimento de seu carro na praça. Sabendo-se que o preço do litro de combustível é de R$ 2,90, escreva um programa para ler: a marcação do odômetro (Km) no início do dia, a marcação (Km) no final do dia, o número de litros de combustível gasto e o valor total (R$) recebido dos passageiros. Calcular e escrever: a média do consumo em Km/l e o lucro do dia. 1.8) A equipe Renault deseja calcular o número mínimo de litros que deverá colocar no tanque de seu carro para que ele possa percorrer um determinado número de voltas até o primeiro reabastecimento. Escreva um programa que leia o comprimento da pista (em metros), o número total de voltas a serem percorridas no grande prêmio, o número de reabastecimentos desejados e o consumo de combustível do carro (em Km/l). Calcular e escrever o número mínimo de litros necessários para percorrer até o primeiro reabastecimento. OBS: Considere que o número de voltas entre os reabastecimentos é o mesmo. 2 1.9) Uma equação do segundo grau, que tem a forma ax +bx+c , pode ter duas, uma ou nenhuma raiz real. Pode-se verificar o número de raízes reais calculando-se o valor de Δ=b² −4ac . Se Δ for maior do que 0, a equação tem duas raízes reais. Se ∆ for igual a 0, tem uma única raiz. Se ∆ for menor do que 0, então a equação não tem nenhuma raiz real. Faça um programa que leia os coeficientes de uma equação do segundo grau e calcule o número de raízes reais que a respectiva equação apresenta. 2. ESTRUTURAS DE CONTROLE – SELEÇÃO 2.1) Escreva um programa que leia o código de origem de um produto e imprima na tela a região de sua procedência conforme a tabela abaixo: código código código código 1 2 3 4 : : : : Sul Norte Leste Oeste código código código código 5 ou 6: Nordeste 7, 8 ou 9 : Sudeste 10 : Centro-Oeste 11 : Noroeste Observação: Caso o código não seja nenhum dos especificados o produto deve ser classificado como Importado. 2.2) Escreva um programa que leia as notas das duas avaliações obrigatórias e a nota de uma avaliação optativa. Caso o aluno não tenha feito a optativa deve ser fornecido o valor –1. Calcular a média do semestre considerando que a prova optativa substitui a nota mais baixa entre as duas primeiras avaliações. Escrever a média e mensagens que indiquem se o aluno foi aprovado, reprovado ou está em exame, de acordo com as informações abaixo: Aprovado : media >= 7.0 Reprovado: media < 3.0 Exame: media >= 3.0 e < 7.0 2.3) As maçãs custam R$ 0,30 cada se forem compradas menos do que uma dúzia, e R$ 0,25 se forem compradas pelo menos doze. Escreva um programa que leia o número de maçãs compradas, calcule e escreva o valor total da compra. 2.4) Escreva um programa para ler 3 valores inteiros (considere que não serão lidos valores iguais) e escreva-os em ordem crescente. 2.5) Tendo como entrada a altura e o sexo (codificado da seguinte forma: 1:feminino 2:masculino) de uma pessoa, construa um programa que calcule e imprima seu peso ideal, utilizando as seguintes fórmulas: - para homens : (72.7 * altura) – 58 - para mulheres : (62.1 * altura) – 44.7 2.6) Escreva um programa que leia as medidas dos lados de um triângulo e escreva se ele é Equilátero, Isósceles ou Escaleno. 2.7) Faça um programa em C que apresente ao usuário o seguinte menu: 1234- MENU Somar 2 números Subtrair 2 números Multiplicar 2 números Dividir 2 números Opção: O programa deve ler a opção escolhida pelo usuário, em seguida pedir que ele informe 2 números e por fim executar a operação desejada de acordo com a opção selecionada mostrando seu resultado. Utilize a estrutura switch-case para tratar a opção do menu selecionada pelo usuário. 3. ESTRUTURAS DE CONTROLE – REPETIÇÃO 3.1) Considere que a população de um país A é de 90 milhões de habitantes e a população de um país B é de 200 milhões. Considere também que a taxa de crescimento do país A é de 3% ao ano, e a de B 1,5% ao ano. Escreva um programa em C que considere estas informações e calcule e escreva a quantidade de anos que serão necessários para que a população de A se iguale ou ultrapasse a população de B. 3.2) Um número primo é aquele que é divisível somente por ele mesmo e por um. Faça um programa em C que mostre todos os números primos entre 1 e 100. 3.3) Ache o primeiro número, entre 1 e 1 milhão que é divisível por 11, 13 e 17. 3.4) Elabore um programa em C para controlar uma pesquisa entre os eleitores de Joinville que votaram no candidato a prefeito Rogério Novaes. O programa deve ler o salário de cada um dos 150 eleitores que devem ser entrevistados. Ao final da leitura dos 150 salários, o programa deve exibir na tela as seguintes informações: a) A média de salário dos eleitores entrevistados; b) A diferença entre o maior salário e o menor salário dos entrevistados; c) A quantidade de entrevistados que pertencem a classe média. Considere que o salário da classe média deve estar entre R$ 1064 e R$ 4591. 3.5) O quadrado de um número natural n é dado pela soma dos n primeiros números ímpares consecutivos. Por exemplo, 12=1, 22=1+3, 32=1+3+5, 42=1+3+5+7, etc. Faça um programa em C em que dado um número n informado pelo usuário, o programa calcule seu quadrado usando a soma de ímpares ao invés de produto. 3.6) Faça um programa em C para resolver o seguinte somatório. O usuário deve informar o valor de n e o programa deve exibir o resultado do somatório. n (i*(i-1)) i=2 3.7) Escreva um programa em C que leia um número inteiro N e em seguida imprima N linhas do triângulo de Floyd: Ex: N=6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 4. FUNÇÕES 4.1) Construa um programa que unifique os exercícios 1.3 e 1.4 de forma que uma mesma função seja capaz de converter uma temperatura na unidade de medida desejada pelo usuário 4.2) Faça um programa para ler um inteiro N > 0 e calcular o seguinte somatório: S = N + N-1 + N-2 + N-3 + ... + 0. A função deve receber o valor de N e devolver o valor de S. 4.3) Escreva um programa para mostrar o N termo da série de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21,..... Crie uma função chamada FIB que deve receber N como parâmetro, calcula e imprime o termo de número N da série. 4.4) Escreva um programa que implemente um conversor de sistemas numéricos. Inicialmente o programa deverá apresentar um menu com as seguintes opções para posterior escolha do usuário: 1234- Conversão: Decimal para binário Binário para decimal Decimal para hexadecimal Sair do programa. Opção: O programa deverá esperar que o usuário escolha sua opção e, em seguida, deverá solicitar que o número a converter seja informado (caso a escolha for uma das opções de 1-3). Faça com que as opções de 1-3 do menu sejam implementadas por funções distintas que recebem um número como parâmetro. A impressão do menu também deverá ser implementada por uma função. Após a conversão de um número, o menu deverá ser apresentado novamente, e o programa será finalizado apenas quando a opção 4 for escolhida. 4.5) Escreva um programa com uma função chamada MM que recebe dois parâmetros, A e B, e devolve o menor dos dois em A e o maior dos dois em B. Caso sejam passados valores repetidos, a ordem da resposta entre eles não importa. Use passagem de parâmetros por referência. 4.6) Escreva um programa com uma função que recebe um número decimal de dois algarismos por referência e altere-o de forma que o número fique invertido. Exemplo: o número 23 é transformado em 32. 4.7) Reescreva os exercícios 4.2 de forma a resolvê-lo através de uma função recursiva. 4.8) Reescreva os exercícios 4.3 de forma a resolvê-lo através de uma função recursiva. 4.9) Escreva uma função recursiva para resolver o seguinte somatório: n (i*i) i=1 A função recursiva deve receber n como parâmetro e retornar o resultado do somatório. 5. VETORES 5.1) Faça um programa que solicite ao usuário o preenchimento de um vetor de floats A com 10 posições. Criar e imprimir um segundo vetor seguindo as regras: a) os elementos de índice par (posição 0, 2, 4, 6 e 8) são calculados pelos correspondentes em A dividido por 2; b) os elementos de índice ímpar são calculados pelos correspondentes em A multiplicados por 3. 5.2) Faça um programa que leia dois vetores A e B de N elementos inteiros, intercale os elementos formando um novo vetor C. Imprima o vetor C. 5.3) Um palíndromo é uma seqüência de caracteres cuja leitura é idêntica se feita da esquerda para a direita ou vice-versa. Por exemplo , OSSO e OVO são palíndromos. Em frases, os espaços são ignorados. Por exemplo, SUBI NO ONIBUS é uma frase palíndromo. Fazer um programa que leia uma string e diga se ela é ou não um palíndromo. 5.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.5) Faça um programa que leia uma matriz 5 X 5 e calcule e escreva a média dos elementos localizados na área marcada com '*'. * * * * * * * * * * 6. PONTEIROS 6.1) Desenvolver um programa que leia um vetor de números inteiros contendo 10 elementos e exiba na tela todos os números armazenados nas posições pares do vetor. Usar aritmética de ponteiros. 6.2) Desenvolver um programa que leia uma string qualquer e mostre quais foram as vogais encontradas na string. Usar aritmética de ponteiros. 6.3) Implemente um programa, que leia 3 números inteiros. Some uma unidade ao maior número lido através de ponteiros e escreva seu valor e seu endereço de memória. Subtraia uma unidade do menor número lido através de ponteiros e escreva seu valor e seu endereço de memória. Escreva o número de valor intermediário e seu endereço de memória utilizando ponteiros. 6.4) Fazer uma função para: a. Receber dois ponteiros para char (char*) como parâmetro e um número representando uma certa quantidade de caracteres. b. procurar, no vetor apontado pelo parâmetro 1, o primeiro caracter de espaço (‘ ‘) ou o fim de vetor (representado pela quantidade fornecida no parâmetro 3). c. copiar os caracteres anteriores ao espaço no vetor indicado pelo segundo parâmetro. d. retornar o número de caracteres copiados. 6.5) Fazer um programa para: a. declarar variáveis a, b, c, d do tipo int. b. declarar variáveis e, f, g, h do tipo float. c. declarar vetor v de 10 elementos do tipo char. d. declarar variável x do tipo int. e. criar um ponteiro apontando para o endereço de a. f. incrementar o ponteiro, mostrando o conteúdo do endereço apontado (em forma de número). Caso o endereço coincida com o endereço de alguma outra variável, informar o fato. 6.6) Fazer uma função que: a. receba 3 números como parâmetros: A, B e C. b. ordene de tal forma que, ao final da função, A contenha o menor número e C o maior. c. mostre os números ordenados. 6.7) Fazer uma função DIVS que: a. recebe como parâmetro um número inteiro num por valor e dois números inteiros max e min por referência; b. retorna 0 se o número num é primo e 1 caso contrário. Se o número não for primo, as variáveis max e min devem assumir os valores do menor e do maior divisores inteiros do número, respectivamente, desconsiderando o número 1 e o próprio número num. 6.8) Fazer um programa que receba do usuário a quantidade N de números a ser digitada. Em seguida, o programa deve alocar dinamicamente um vetor de N inteiros, receber N números do usuário e armazenar no vetor, e mostrar o maior valor do vetor, o menor valor do vetor e a média dos valores. 6.9) Faça um programa em C que Implemente as seguintes funções para manipulação de strings: strlen, strcat, strcmp. O retorno de valores e recebimento de parâmetros deve ser o mesmo das funções usadas na Linguagem C. 7. ESTRUTURA DE DADOS 7.1) Dada a struct abaixo, declare duas variáveis (a1, a2). Solicite ao usuário o preenchimento de a1 (matricula, nome, end) e em seguida faça a2 = a1. Imprima os campos de a2 e veja o resultado. struct Aluno { int matricula; char nome[50]; char end[50]; }; 7.2) Criar um programa que crie uma estrutura qualquer com pelo menos 3 campos de tipos diferentes e solicite o preenchimento de seus campos ao usuário. Em seguida passar a estrutura como parâmetro para uma função que simplesmente imprimirá os dados na tela. 7.3) Dada as estruturas abaixo, criar um vetor de 5 posições do tipo Funcionário. Solicitar ao usuário o preenchimento dos dados para cada posição (funcionário) e, ao final, mostrar ordenado por código: struct End { struct Funcionario { char rua[30]; int codigo; int num; char nome[50]; char cidade[50] char depto[50]; }; float salario; End end; }; 7.4) Considerando que um time possui 5 jogadores: 1. declare duas estruturas TIME (codigo (int), nome (char[30]), ano_fundacao (int) , jogadores (JOGADOR[5]) ) e JOGADOR (nr_camisa (int) , nome (char[30]) ); 2. crie um vetor de 5 posições da estrutura time e solicite ao usuário o preenchimento. 3. Ao final, mostrar todos os jogadores de times cujo ano de fundação seja <= 1950). 7.5) Uma determinada loja precisa de um simples cadastro de clientes que deverá: 1. permitir o cadastramento(inclusão, exclusão, alteração, consulta e listagem) de até 10 clientes (código (int), nome (char[50]), telefone (char[20]) e email (char[50]); 2. possibilitar a consulta por código ou nome; 3. possibilitar a listagem por ordem de nome ou código; OBS. - Disponibilizar um menu ao usuário com as opções; - Utilize funções específicas para implementar cada uma das opções do menu; - Exemplo do menu: 1- Incluir cliente 2- Alterar cliente 3- Excluir cliente 4- Consultar cliente (nome) 5- Consultar cliente (código) 6- Listar clientes por ordem de nome 7- Listar clientes por ordem de código 8- Sair 8. ARQUIVOS 8.1) Faça um programa que abra um arquivo texto chamado TESTE.TXT (criado por você no bloco de notas), leia e imprima suas linhas na tela. 8.2) Fazer um programa que abra um arquivo texto qualquer (caminho do arquivo deve ser solicitado ao usuário), leia e imprima suas linhas. 8.3) Fazer um programa que solicite 5 palavras ao usuário, coloque em ordem alfabética e grave em um arquivo texto (uma em cada linha). 8.4) Fazer um programa que leia um arquivo texto e copie para outro (novo); 8.5) Escreva um programa que solicite o preenchimento de um vetor de inteiros de 10 posições. Depois, gravar em um arquivo texto chamado VETOR.TXT, as seguintes informações: Maior valor no vetor: 999; Menor valor no vetor: 999; Média aritmética dos valores: 999; Somatório dos valores: 999; Vetor ordenado: 999,999,999,999,999,999,999,999,999,999; 8.6) Fazer um programa que solicite o preenchimento de um vetor de estruturas com 5 posições (declare uma estrutura qualquer). Ao final, gravar (fwrite) o vetor de estruturas em um arquivo chamado DADOS.DAT 8.7) Alterar o programa do exercício anterior para, caso exista o arquivo DADOS.DAT, ao invés de solicitar o preenchimento, ler do arquivo.