Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciência de Computação DCC003 -- Algoritmos e Estruturas de Dados 1 -- 2013/1 -- Turma F Prática 3 -- Prática em C ############################################################################### INSTRUÇÕES: Salve suas soluções num arquivo .c (o nome está indicado entre parênteses no cabeçalho de cada exercício) e entregue no Moodle. Coloque um comentário na primeira linha do arquivo contendo os nomes dos alunos da dupla. (Um comentário em C é qualquer texto entre /* e */.) Para ler uma string de até 127 caracteres do teclado, use o seguinte código: char linha[128]; printf("digite uma linha:\n"); fgets(linha, 128, stdin); Para gerar um número aleatório em C entre 0 e RAND_MAX use a função rand() definida dentro de stdlib.h: #include /* no começo do arquivo */ int aleatorio = rand(); /* em qualquer ponto no programa */ Exercício 1 -- Rolador de dado (dado.c) ###################################### Faça um programa para rolar dados. Isto é, seu programa deve gerar um número aleatório em 1 e 6 e falar qual é o resultado. Para testar seu programa, role 100 mil dados e depois imprima quantas vezes cada número (face) do dado foi rolada. Seu dado está tendencioso? Exercício 2 -- Dígito verificador de CPF (cpf.c) ############################ Números de CPF (Cadastro de Pessoa Física) possuem nove dígitos mais dois dígitos verificadores. As regras para cálculo dos digítos verificadores são as seguintes. Usaremos como exemplo o número 123456789: (a) Calcule a soma dos produtos dos nove dígitos utilizando peso 2 para unidade, peso 3 para dezena, peso 4 para centena e assim sucessivamente. Exemplo: 9*2 + 8*3 +7*4 +6*5 + 5*6 + 4*7 + 3*8 + 2*9 + 1*10 = 210. (b) A dezena do número verificador é 0 caso o resto da divisão por 11 da soma dos produtos seja 0 ou 1. Caso contrário a dezena corresponde a subtrair de 11 o resto da divisão por 11 da soma dos produtos. Exemplo: o resto da divisão de 210 por 11 é 1, então a dezena do número verificador é 0. (c) Calcule a soma dos produtos dos dez digitos, onde o digito menos significativo passa a ser a dezena dos digitos verificadores, utilizando os seguintes pesos: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Exemplo: 2*0 +3*9 + 4*8 + 5*7 + 6*6 + 7*5 + 8*4 + 9*3 + 10*2 + 11*1 = 255. (d) A unidade do número verificador é 0 caso o resto da divisão da soma dos produtos por 11 seja 0 ou 1. Caso contrário a unidade corresponde a 11 menos o resto da divisão por 11 da soma dos produtos. Exemplo: resto da divisão de 255 por 11 é 2, então a unidade do número verificador é 11 - 2 = 9. O CPF 123.456.789 com dígitos verificadores é 123.456.789-09. Escreva um programa para calcular o dígito verificador de CPF dados os nove dígitos do CPF. Exercício 3 -- Músicas num álbum (musica.c) ################################ Declare uma estrutura para armazenar os dados de uma música. Para cada música, você deve armazenar o título, o álbum, o número da música no álbum e a duração da música (em segundos). Faça um programa para ler os dados das músicas num álbum. Seu programa deve perguntar o nome do álbum no início do programa e apenas uma vez; esse nome será utilizado para todas as músicas. Para cada música, seu programa deve perguntar o título e a duração da música. Seu programa deve ler as músicas de um álbum em sequencia e deve preencher o número das músicas automaticamente. Quando o usuário terminar de digitar as músicas, seu programa deve imprimir os dados da música mais curta e da música mais longa do álbum.