Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disciplina: Algoritmos de Programação Professor: Luiz Reginaldo Almeida Fleury Curado Email: luiz.curado@ucb.br Atividades da Unidade 4 (resolvidas no quarto chat) Aula 7, Atividade 1) Faça um algoritmo que leia os elementos de um vetor de vinte posições de inteiros e em seguida imprima: a. A média dos elementos do vetor. b. Todos os elementos do vetor em ordem inversa à leitura. c. A quantidade de elementos pares que existem no vetor. 1) Solução: algoritmo Vetores; principal // Declarações inteiro vetor[20] ; inteiro i ; inteiro soma, media, numPares ; // Leitura dos elementos do vetor para (i de 0 ate 19 passo 1) faca escreva( "Entre com o vetor[" , i, "]: " ); leia( vetor[i] ); fimPara // a. Média dos elementos do vetor soma = 0; para (i de 0 ate 19 passo 1) faca soma = soma + vetor[i] ; fimPara media = soma / 20 ; escreval( "A media dos elementos do vetor = ", media ); // b. Imprimir os elementos do vetor em ordem inversa à leitura. escreva( "Ordem inversa: "); para (i de 19 ate 0 passo -1) faca escreva( vetor[i], " " ); fimPara // c. A quantidade de elementos pares que existem no vetor. numPares = 0 ; para (i de 0 ate 19 passo 1) faca se ( (vetor[i] % 2) == 0 ) entao numPares = numPares + 1 ; fimSe fimPara escreval( "Quantidade de elementos pares = ", numPares ); fimPrincipal Aula 7, Atividade 2) Faça um algoritmo que leia um vetor de vinte posições e o imprima (todos os seus elementos). Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Imprima novamente o vetor depois da troca. Observe que não é apenas para imprimir em ordem inversa, como fizemos no exercício anterior, mas para efetivamente trocar os valores das posições. Solução: algoritmo TrocaValorVetores; principal // Declarações inteiro vetor[20] ; inteiro i ; inteiro aux ; // Leitura dos elementos do vetor para (i de 0 ate 19 passo 1) faca escreva( "Entre com o vetor[" , i, "]: " ); leia( vetor[i] ); fimPara // Imprime o vetor escreva( "Conteudo do vetor: " ); para (i de 0 ate 19 passo 1) faca escreva( vetor[i], " " ); fimPara // Troca de valores para (i de 0 ate 9 passo 1) faca aux = vetor[ i ] ; vetor[ i ] = vetor[ 19-i ] ; vetor[ 19-i ] = aux ; fimPara // Imprime o vetor escreva( "Vetor depois da troca: " ); para (i de 0 ate 19 passo 1) faca escreva( vetor[i], " " ); fimPara fimPrincipal Aula 7, Atividade 3) Faça um algoritmo que receba uma frase do usuário e imprima: a. A quantidade de consoantes da frase. b. A quantidade de palavras da frase. c. A frase com apenas as iniciais em maiúsculo. Independente de ter sido informada em maiúsculo ou minúsculo. Exemplo: Hello World. Solução: algoritmo MinhaFrase ; principal // Declarações texto frase ; inteiro i ; caracter letra ; inteiro numConsoantes ; inteiro numPalavras ; logico lendoPalavra ; texto novaFrase ; // Leitura da frase, e conversao para minusculo escreva( "Entre com a frase: " ); leia( frase ) ; frase = minusculo( frase ); // a. conta o numero de consoantes numConsoantes = 0 ; para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca letra = caracterTexto( frase, i ) ; se( (letra == 'b') ou (letra == 'c') ou (letra == 'd') ou (letra == 'f') ou (letra == 'g') ou (letra == 'h') ou (letra == 'j') ou (letra == 'k') ou (letra == 'l') ou (letra == 'm') ou (letra == 'n') ou (letra == 'p') ou (letra == 'q') ou (letra == 'r') ou (letra == 's') ou (letra == 't') ou (letra == 'v') ou (letra == 'x') ou (letra == 'w') ou (letra == 'y') ou (letra == 'z') ) entao numConsoantes = numConsoantes + 1; fimSe fimPara escreval( "A frase possui ", numConsoantes, " consoantes."); // b. A quantidade de palavras da frase. numPalavras = 0 ; lendoPalavra = falso ; para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca letra = caracterTexto( frase, i ) ; // Se encontramos espaco, entao nao estamos lendo uma palavra se ( letra == ' ' ) entao lendoPalavra = falso ; // Caso contrario, temos uma letra. // Entao, se lendoPalavra = falso o caractere anterior foi // um espaço. Essa essa é a primeira letra da palavra senao se (lendoPalavra == falso ) entao lendoPalavra = verdadeiro ; numPalavras = numPalavras + 1; fimSe fimSe fimPara escreval( "A frase possui ", numPalavras, " palavras."); // c. A frase com apenas as iniciais em maiúsculo. novaFrase = "" ; lendoPalavra = falso ; para (i de 0 ate tamanhoTexto(frase)-1 passo 1) faca letra = caracterTexto( frase, i ) ; // Se encontramos espaco, entao nao estamos lendo uma palavra se ( letra == ' ' ) entao lendoPalavra = falso ; novaFrase = novaFrase + ' ' ; // Caso contrario, temos uma letra. // Entao, se lendoPalavra = falso o caractere anterior foi // um espaço. Essa essa é a primeira letra da palavra. // Passa a letra para maiuscula senao se (lendoPalavra == falso ) entao lendoPalavra = verdadeiro ; novaFrase = novaFrase + maiusculo( "" + letra ) ; // Se chegar aqui temos uma letra, mas essa não é a primeira // letra da palavra senao novaFrase = novaFrase + letra ; fimSe fimSe fimPara escreval( "A frase com iniciais em maisculas = ", novaFrase); fimPrincipal Aula 8, Atividade 1) A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário e número de filhos. A prefeitura deseja saber: a. Média do salário da população. b. Média do número de filhos. c. Maior salário. d. Percentual de pessoas com salário até R$ 500,00. O final da leitura de dados se dará com a entrada de um salário negativo. O Calango possui uma função (comando) chamado "limpaTela();". Verifique se esta função pode ser útil na implementação desse algoritmo. Solução: algoritmo PesquisaPrefeitura ; principal // Declarações real salario, somaSalarios, mediaSalarios, maiorSalario ; inteiro numeroFilhos, somaNumeroFilhos, mediaNumeroFilhos ; inteiro numeroValoresLidos ; inteiro numeroPessoasComSalarioAte500 ; real percentualPessoasComSalarioAte500 ; // Inicializa variaveis somaSalarios = 0 ; somaNumeroFilhos = 0 ; numeroValoresLidos = 0 ; numeroPessoasComSalarioAte500 = 0 ; maiorSalario = 0 ; // Repeticao faca // Lê salario escreva( "Entre com o salário: " ); leia( salario ) ; // O fim da leitura ocorre com um salário negativo // Então só faz os calculos abaixo, se o salario for positivo se ( salario >= 0 ) entao // Lê número de filhos escreva( "Entre com o número de filhos: " ); leia( numeroFilhos ); // Guarda os valores lidos nas somas somaSalarios = somaSalarios + salario ; somaNumeroFilhos = somaNumeroFilhos + numeroFilhos ; // Conta mais um no numero de valores lidos numeroValoresLidos = numeroValoresLidos + 1; // Verifica se esse é o maior salário se ( salario > maiorSalario ) entao maiorSalario = salario ; fimSe // Conta pessoas com salario até 500se (salario <= 500) entao numeroPessoasComSalarioAte500 = numeroPessoasComSalarioAte500 + 1 ; fimSe fimSe enquanto( salario >= 0 ) ; // Calcula resultados mediaSalarios = somaSalarios / numeroValoresLidos ; mediaNumeroFilhos = somaNumeroFilhos / numeroValoresLidos ; percentualPessoasComSalarioAte500 = (numeroPessoasComSalarioAte500 / numeroValoresLidos) * 100 ; // Escreve resultados escreval( "a. Média do salário da população = ", mediaSalarios); escreval( "b.Média do número de filhos = " , mediaNumeroFilhos); escreval( "c. Maior salário = ", maiorSalario ); escreval( "d. Percentual de pessoas com salário até R$ 500 = ", percentualPessoasComSalarioAte500:2:2, "%"); fimPrincipal Aula 8, Atividade 2) Conforme discutimos, um bom programador programa para o usuário, para o programador e para o computador. Assim, faça o algoritmo a seguir o MELHOR possível para a dimensão programador. Capriche nos comentários explicativos! Mais uma coisa: existem alguns algoritmos que são clássicos dentro da computação. Assim, é importante que você os conheça. Um dos principais é o Fibonacci. Faça um algoritmo que imprima os 50 primeiros termos da série de Fibonacci. A série de Fibonacci é como se segue: 1, 1, 2, 3, 5, 8, 13, ..., onde o próximo número da sequência é obtido pela soma dos dois números anteriores. Por exemplo, o próximo será a soma dos 2 últimos (8 + 13).. Solução: algoritmo Fibonacci; principal // Declarações inteiro termo1, termo2 ; inteiro contador ; inteiro proximo ; // Inicio da serie termo1 = 1 ; termo2 = 1 ; // Impressao da serie - inicio escreval( "Termos da série: " ); escreva( "Termo 1: " + termo1 + " " ) ; escreva( "Termo 2: " + termo2 + " " ) ; // Impressao da serie - do terceiro ao 50º termo para (contador de 3 ate 50 passo 1) faca // O próximo termo da sequência é obtido pela soma dos // dois termos anteriores proximo = termo1 + termo2 ; escreval( "Termo ", contador, ": ", proximo, " " ) ; // Atualiza os termos termo1 = termo2 ; termo2 = proximo ; fimPara fimPrincipal Aula 8, Atividade 3) Outro algoritmo clássico é o do número primo. Faça um algoritmo receba um número do usuário e informe se este número é ou não primo. Número primo é aquele que só pode ser divisível (dando resto 0) por 1 e ele mesmo. Solução: algoritmo VerificaPrimo; principal // Declarações inteiro numero ; inteiro divisor ; logico primo ; // Pede o numero escreva( "Entre com o número: " ); leia( numero ); // Início: assumimos que o número é primo e o primeiro divisor 2 primo = verdadeiro ; divisor = 2 ; // Verifica se é primo enquanto( (primo == verdadeiro) e (divisor < numero) ) faca se ( (numero % divisor) == 0 ) entao primo = falso ; senao divisor = divisor + 1 ; fimSe fimEnquanto se( primo ) entao escreva( "O numero é primo." ); senao escreva( "O numero não é primo, é divisível por ", divisor ); fimSe fimPrincipal
Compartilhar