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 2 -- Condicionais, laços, arranjos, structs, funções ############################################################################### 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); Exercício 1 -- Produtório com do/while (produtorio.c) ######################### Modificar o exemplo do produtório (slide 14, aulas 5-6) para utilizar do/while em vez de while. Discuta se o programa original com while e a modificação com do/while dão o mesmo resultado quando o primeiro número lido é zero. Exercício 2 -- Potências de dois (potencia2.c) ################################ Faça um programa para verificar se um número é uma potência de dois. Se for, imprima qual a potência de dois que ele é. (Seja X uma potência de dois e Y o logaritmo de X na base 2. Y é inteiro porque X é uma potência de dois. Seu programa deve imprimir Y.) Não use funções matemáticas da biblioteca padrão. Exercício 3 -- Alfabeto invertido (alfabeto.c) ################################ Crie um programa que inicialize um vetor de caracteres com as letras do alfabeto (não inicialize as letras na declaração, faça um laço). Depois imprima o alfabeto em ordem reversa. Declare o vetor contendo o alfabeto como "char alfabeto[26];". Exercício 4 -- Comparação de strings (compara.c) ############################## Crie um programa que lê dois strings s1 e s2 do teclado e imprima -1 se s1 for lexograficamente inferior a s2, imprima 0 se s1 e s2 forem iguais e imprima +1 se s1 for lexograficamente superior a s2. Não use funções da biblioteca padrão para comparar strings. Por exemplo: "banana" e "amora" deve imprimir 1 "amora" e "banana" deve imprimir -1 "banana" e "banana" deve imprimir 0 Exercício 5 -- Substrings (substring.c) ###################################### Faça um programa que lê duas strings s1 e s2 do teclado e conte quantas vezes s2 aparece dentro de s1. Exemplos: s1 = abcabc, s2 = abc, o programa deve contar 2 s1 = aabc, s2 = abc, o programa deve contar 1 s1 = aaaaaa, s2 = aaa, o programa deve contar 4 Exercício 6 -- Criptografia (cripto.c) ####################################### Implemente um programa que leia uma string do teclado e um número inteiro que vai servir de senha. Seu programa deve imprimir uma string na tela que é a versão criptografada da string lida. Para criptografar cada caractere da string, rotacione o valor do caractere pelo valor da senha. Exemplos: string = abcd, senha = 2, saida = cdef string = az, senha = 1, saida = ba Para descriptografar uma mensagem criptografada, basta passar ao programa o valor negativo da chave.