Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prática 11 – INF100 – 2014/II – Valor: 1 ponto Página 1 de 2 INF100 – Introdução à Programação I Roteiro Prática 10 a 14 de Novembro de 2014 Nome do arquivo a ser entregue: p11.cpp O programa disponível na página de entrega constrói e exibe na tela um arranjo contendo uma sequência aleatória de n bases proteicas encontradas em compostos de DNA e RNA. Compile e rode esse programa para ver se está se comportando corretamente. Estude o código dele para ver há alguma dúvida no entendimento dele. Aguarde até que todas as dúvidas tenham sido sanadas com o professor. Agora altere esse programa da seguinte forma: 1. Transforme as linhas de código: cout << "Entre com o valor de n (1..100): "; cin >> n; em uma função chamada leia_n() contendo esses dois comandos e mais o código necessário para efetuar a validação da entrada dentro do intervalo mostrado, e retornar o valor de n lido. Com isso, dentro da função main() você poderá substituir essas duas linhas por: n = leia_n(); 2. Crie uma função que receba como parâmetro um valor do tipo char contendo uma base proteica e retorne outro valor do tipo char contendo o complemento dessa base, a saber: Base Complemento 'A' 'T' 'C' 'G' 'G' 'C' 'T' 'A' 3. Declare um novo arranjo rna2[100] no programa e insira código no final da função main() (antes do “return 0”) para preencher esse novo arranjo com o complemento do rna1, usando a função criada no item 2. Depois, o programa deve escrever o conteúdo do arranjo rna2 logo abaixo do rna1. 4. Em seguida, o programa deve escrever na tela um histograma mostrando as quantidades de bases “casadas” (complementares). O histograma deve conter um asterisco ‘*’ para cada unidade formada por uma base e seu complemento (veja exemplos abaixo). Obs.: como os complementos de cada base são sempre os mesmos, você só precisa fazer a contagem das bases de rna1. Dica que pode facilitar a implementação (mas não é obrigatório): use um arranjo declarado e inicializado dessa forma: int nBase[4] = {0, 0, 0, 0}; para conter as contagens de cada base. Desse modo, tanto a contagem das bases como a produção do histograma podem ser feitos com comandos for em vez de ser um por um. Por exemplo, para contar a frequência de cada base e colocar os resultados dentro do arranjo acima, você pode fazer assim: para i = 0 até n-1 faça: // para cada base contida em rna1 para j = 0 até 3 faça: // percorra todas as bases possíveis se (rna1[i] = base[j]) // se combinar... nBase[j]++; // ...incremente o contador da base Prática 11 – INF100 – 2014/II – Valor: 1 ponto Página 2 de 2 Seguem abaixo dois exemplos de execução do programa. Os valores mostrados por seu programa serão diferentes devido à geração dos dados aleatórios. Entre com o valor de n (1..100): 10 TTACGATTCT AATGCTAAGA A: ** (2 = 20%) C: ** (2 = 20%) G: * (1 = 10%) T: ***** (5 = 50%) Entre com o valor de n (1..100): 0 Entre com o valor de n (1..100): -1 Entre com o valor de n (1..100): 110 Entre com o valor de n (1..100): 60 GCTGGAGTTGACTAACCCGTCTCCGCGATCTGTAAAAACCCCTGGAATATCGGCGTACCA CGACCTCAACTGATTGGGCAGAGGCGCTAGACATTTTTGGGGACCTTATAGCCGCATGGT A: *************** (15 = 25%) C: ****************** (18 = 30%) G: ************** (14 = 23.3333%) T: ************* (13 = 21.6667%) Cuidado com a indentação do código! Após certificar-se que seu programa está correto, envie o arquivo do programa fonte (somente o arquivop11.cpp). Use o atalho existente no desktop (área de trabalho) para abrir a página de entrega.
Compartilhar