Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista de Exercícios – Computação Científica 2 Funções em linguagem C: Ponteiros em linguagem C: 4. Fazer um programa que lê um valor, um operador (+,-,*,/) e outro valor e imprime o resultado da expressão: <valor 1> <operador> <valor 2> 5. Escrever um programa em "C" que solicita as notas das duas provas feitas por cada um dos alunos de uma turma (as notas tem de estar no intervalo [0 10]) e imprime para cada um a média das notas. O programa deve parar imediatamente após ter sido digitado o valor 50 para a nota da primeira prova. Grupo III - Explorando comandos do pré-processador 1. Escrever a seqüência de comandos do pré-processador que define o tipo de dados BOOL (com as constantes TRUE e FALSE) caso isso ainda não tenha sido feito. 2. Faca um programa em "C" que le dois números e utiliza uma função chamada "soma" e outra chamada "subtracao" para imprimir a soma e a diferenca entre os dois números. Ambas funções devem receber dois inteiros como parâmetro e retornar um inteiro como resultado. O programa deve ter duas versões para os protótipos das funções selecionáveis através da definição das constantes: "KR" (Kernighan e Ritchie) e "ANSI" (padrão ANSI). Grupo IV - Explorando o uso de funções 1. Fazer uma função que cacula a enésima potência de uma variável real x: f(x, n) = xn 2. Fazer uma função que calcula o fatorial de um número. Implementar uma versão recursiva e uma versão com laço. 3. Dado que podemos calcular ex por: ex = 1 + x + x2/2! + x3/3! + ... Fazer um trecho de programa em "C" que lê um valor para x e calcula o valor de ex. O valor deve ser calculado enquanto o termo calculado for maior que 10E-6. 4. Exercício: fazer um programa em "C" que solicita o total gasto pelo cliente de uma loja, imprime as opções de pagamento, solicita a opção desejada e imprime o valor total das prestações (se houverem). 1) Opção: a vista com 10% de desconto 2) Opção: em duas vezes (preço da etiqueta) 3) Opção: de 3 até 10 vezes com 3% de juros ao mês (somente para compras acima de R$ 100,00). OBS: fazer uma função que imprime as opções solicita a opção desejada e retorna a opção escolhida. No programa principal, testar a opção escolhida e ativar a função correspondente (uma função para cada opção). Grupo V - Ponteiros 1. Procure determinar quais valores são impressos ao final deste programa. Confira sua resposta testando o programa no micro. Execute-o passo a passo conferindo o valor das variáveis em cada momento. a) void main() { int a,b,*c; a = 3; b = 4; c = &a; b++; *c = a+2; printf("%d %d",a,b); } b) void main() { int a,b,*c; a = 4; b = 3; c = &a; *c = *c +1; c = &b; b = b+4; printf("%d %d %d",a,b,*c); } c) void main() { int a,b,*c,*d,*f; a = 4; b = 3; c = &a; d = &b; *c /= 2; f = c; c = d; d = f; printf("%d %d",*c,*d); } d) int calcula(int); void main() { MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE SÃO CARLOS ENGENHARIA MECÂNICA Grupo V - Ponteiros 1. Procure determinar quais valores são impressos ao final deste programa. Confira sua resposta testando o programa no micro. Execute-o passo a passo conferindo o valor das variáveis em cada momento. a) void main() { int a,b,*c; a = 3; b = 4; c = &a; b++; *c = a+2; printf("%d %d",a,b); } b) void main() { int a,b,*c; a = 4; b = 3; c = &a; *c = *c +1; c = &b; b = b+4; printf("%d %d %d",a,b,*c); } c) void main() { int a,b,*c,*d,*f; a = 4; b = 3; c = &a; d = &b; *c /= 2; f = c; c = d; d = f; printf("%d %d",*c,*d); } d) int calcula(int); void main() { int a,b,c; char d; a=1;b=2;c=3;d='A'; a+=b*c; d=(a>7)?d-1:d+1; b = calcula(b); c = calcula(calcula(a)); a = c++; printf("%d - %d - %d - %c\n",a,b,c,d); } int calcula(int x) { int i; if ((x=x*2)>5) return(x+3); for(i=0;i<10;i++) { if (i<5) continue; if (x>8) break; x+=2; } return(x); } Grupo VI - Vetores 1. Fazer um programa em "C" que lê 10 valores e imprime o maior e o menor valores lidos. 2. Fazer um programa que lê um conjunto de 10 valores e os imprime ordenados. 3. Fazer uma rotina que recebe como parâmetro um array de 5 posições contendo as notas de um aluno ao longo do ano e devolve a média do aluno. 4. Fazer uma rotina que recebe um array do tipo double e o número de valores que devem ser solicitados ao usuário e devolve o array preenchido com os valores digitados. 5. Fazer um programa em "C" que lê um conjunto de 10 valores inteiros e verifica se algum dos valores é igual a média dos mesmos. 6. Fazer um programa que lê valores para uma matriz do tipo "float"de 5 linhas por 3 colunas e imprime a diferença entre a média dos elementos das colunas pares e a média dos elementos das linhas ímpares. Grupo VII - Strings 1. Fazer um programa em "C" que lê um string qualquer de no máximo 80 caracteres e imprime: - Quantos caracteres tem o string; int a,b,c; char d; a=1;b=2;c=3;d='A'; a+=b*c; d=(a>7)?d-1:d+1; b = calcula(b); c = calcula(calcula(a)); a = c++; printf("%d - %d - %d - %c\n",a,b,c,d); } int calcula(int x) { int i; if ((x=x*2)>5) return(x+3); for(i=0;i<10;i++) { if (i<5) continue; if (x>8) break; x+=2; } return(x); } Grupo VI - Vetores 1. Fazer um programa em "C" que lê 10 valores e imprime o maior e o menor valores lidos. 2. Fazer um programa que lê um conjunto de 10 valores e os imprime ordenados. 3. Fazer uma rotina que recebe como parâmetro um array de 5 posições contendo as notas de um aluno ao longo do ano e devolve a média do aluno. 4. Fazer uma rotina que recebe um array do tipo double e o número de valores que devem ser solicitados ao usuário e devolve o array preenchido com os valores digitados. 5. Fazer um programa em "C" que lê um conjunto de 10 valores inteiros e verifica se algum dos valores é igual a média dos mesmos. 6. Fazer um programa que lê valores para uma matriz do tipo "float"de 5 linhas por 3 colunas e imprime a diferença entre a média dos elementos das colunas pares e a média dos elementos das linhas ímpares. Grupo VII - Strings 1. Fazer um programa em "C" que lê um string qualquer de no máximo 80 caracteres e imprime: - Quantos caracteres tem o string; Arquivos em linguagem C: 12. Você foi contratado por uma empresa de transporte logístico. A empresa utiliza a seguinte base de dados para cadastro de motoristas e veículos, salvos em um arquivo de texto: cadastro.txt Como você verificou, o arquivo de texto possui uma mascara formatada do tipo “%s\t%s\t%d\n”. Neste caso simplificado, considere que os motoristas são cadastrados apenas pelo primeiro nome, Universidade Federal de Uberlaˆndia - UFU Faculdade de Computac¸a˜o - FACOM Lista de exercı´cios de programac¸a˜o em linguagem C Exercı´cios: Arquivos 1. Escreva um programa que: (a) Crie/abra um arquivo texto de nome “arq.txt” (b) Permita que o usua´rio grave diversos caracteres nesse arquivo, ate´ que o usua´rio entre com o caractere ‘0’ (c) Feche o arquivo Agora, abra e leia o arquivo, caractere por caractere, e escreva na tela todos os caracte- res armazenados. 2. Fac¸a um programa que receba do usua´rio um arquivo texto e mostre na tela quantas linhas esse arquivo possui. 3. Fac¸aum programa que receba do usua´rio um arquivo texto e mostre na tela quantas letras sa˜o vogais. 4. Fac¸a um programa que receba do usua´rio um arquivo texto e mostre na tela quantas letras sa˜o vogais e quantas sa˜o consoantes. 5. Fac¸a um programa que receba do usua´rio um arquivo texto e um caracter. Mostre na tela quantas vezes aquele caractere ocorre dentro do arquivo. 6. Fac¸a um programa que receba do usua´rio um arquivo texto e mostre na tela quantas vezes cada letra do alfabeto aparece dentro do arquivo. 7. Fac¸a um programa que receba do usua´rio um arquivo texto. Crie outro arquivo texto contendo o texto do arquivo de entrada, mas com as vogais substituı´das por ‘*’. 8. Fac¸a um programa que leia o conteu´do de um arquivo e crie um arquivo com o mesmo conteu´do, mas com todas as letras minu´sculas convertidas para maiu´sculas. Os no- mes dos arquivos sera˜o fornecidos, via teclado, pelo usua´rio. A func¸a˜o que converte maiu´scula para minu´scula e´ o toupper(). Ela e´ aplicada em cada caractere da string. 9. Fac¸a um programa que receba dois arquivos do usua´rio, e crie um terceiro arquivo com o conteu´do dos dois primeiros juntos (o conteu´do do primeiro seguido do conteu´do do segundo). 10. Fac¸a um programa que receba o nome de um arquivo de entrada e outro de saı´da. O arquivo de entrada conte´m em cada linha o nome de uma cidade (ocupando 40 caracte- res) e o seu nu´mero de habitantes. O programa devera´ ler o arquivo de entrada e gerar um arquivo de saı´da onde aparece o nome da cidade mais populosa seguida pelo seu nu´mero de habitantes. 11. Fac¸a um programa no qual o usua´rio informa o nome do arquivo e uma palavra, e retorne o nu´mero de vezes que aquela palavra aparece no arquivo. 1Joao CORSA 2008 Ricardo GOL 2010 Julia SAVEIRO 2014 … Fernanda GOL 2016 sendo que não existirão motoristas com o mesmo nome. Considere também que o arquivo de texto já existe. Sua função é criar um algoritmo em C para cadastro de motoristas e veículos. a. Crie uma função que recebe o nome do arquivo de texto, e os dados do registro (motorista, veículo e ano), esta deverá adicionar o registro sempre no final do arquivo de textos. b. Crie uma função para verificar se o motorista que se deseja cadastrar já existe no registro. Caso exista a função deverá retornar erro informando que o motorista já possui um carro associado. c. Crie o corpo principal do programa em C que utiliza as funções criadas nos itens (a) e (b). 13. Considerando o exercício anterior desenvolva a funcionalidade de atualizar o veículo do motorista. Para simplificar, você poderá criar um novo arquivo de textos com os registros atualizados.
Compartilhar