Julio_Barros 1 Denunciar post Postado Novembro 29, 2012 Pessoal, como estou começando a estudar Logica de Programação, resolvi abrir um tópico com os exercícios que estou conseguindo resolver (do meu jeito é claro :rolleyes:/> ) e queria que se alguém souber resolver de alguma outra forma mais simples, postasse o Algoritmo, pois me ajudaria no aprendizado. E o essencial, se tiver algo errado, queria que me corrigissem. Obrigado e aqui vai um exercício que demorei algumas horas para fazer: "Após as recentes derrotas da Seleção Brasileira de Futebol, a CBF resolveu fazer uma pesquisa sobre a atuação do técnico Mano Menezes. Para ajudar nesta pesquisa você irá elaborar um algoritmo que cadastre o nome do responsável pela pesquisa, não podendo este nome não ser informado (não é valido não ser digitado o nome), a quantidade de pessoas entrevistadas, que não pode ser inferior a 5, e para cada entrevistado o seu voto de acordo com a seguinte classificação: Opção Atuação do técnico 1 Excelente 2 Boa 3 Precisa Melhorar 4 Substituir o técnico Caso seja informada uma classificação diferente de 1, 2, 3 ou 4 o voto deve ser computado como sem opinião. Após o término da leitura dos dados de todos os entrevistados, seu algoritmo deve apresentar o nome do responsável pela pesquisa, a quantidade de entrevistados que escolheram a opção 1, a quantidade que escolheram a opção 2, a quantidade que escolheram a opção 3, a quantidade que escolheram a opção 4, além da quantidade de entrevistados que não emitiram opinião (sem opinião). algoritmo "PESQUISA SOBRE O DESEMPENHO DO TECNICO MANO MENEZES" // Função : PESQUISA SOBRE MANO MENEZES // Autor : Júlio César // Data : 29/11/2012 // Seção de Declarações // Usei os comandos ESCOLHA, CASO e SE para resolver. var nome_res, nada: caracter // O NADA é apenas para ficar como uma variável nulo. pessoas, i, exc, boa, pre_me, sub_tec, voto, sem_op: inteiro inicio // Seção de Comandos Escreval (" --------------- PESQUISA SOBRE MANO MENEZES ---------------") Escreval ("Digite o Nome do responsavel pela pesquisa") Leia (nome_res) se nome_res = nada entao // NADA ficou igual a 0, pois não atribui nenhum valor Escreval ("Digite o seu nome") fimse Escreval ("Digite a quantidade de pessoas entrevistadas") Leia (pessoas) se pessoas < 5 entao Escreval ("Não pode ser menor que 5") fimse para i de 1 ate pessoas faca Escreval ("Opção da Atuação de Mano Menezes") Escreval (" 1 - Excelente") Escreval (" 2 - Boa") Escreval (" 3 - Precisa Melhorar") Escreval (" 4 - Substituir o Técnico") Leia (voto) escolha voto caso 1 exc <- exc + 1 caso 2 boa <- boa + 1 caso 3 pre_me <- pre_me + 1 caso 4 sub_tec <- sub_tec + 1 fimescolha se (voto <= 0) ou (voto >= 5) entao sem_op <- sem_op + 1 fimse fimpara limpatela Escreval ("Nome do responsavel pela pesquisa") Escreval (nome_res) Escreval ("") Escreval ("Quantidade de pessoas entrevistadas ", pessoas) Escreval ("") Escreval ("Quantidade que acham Excelente ", exc) Escreval ("Quantidade que acham Boa ", boa) Escreval ("Quantidade que acham que Precisa Melhorar ", pre_me) Escreval ("Quantidade que querem Substituir o Técnico ", sub_tec) Escreval ("Quantidade Sem Opinião ", sem_op) fimalgoritmo A medida que eu for resolvendo as questões, irei postando aqui. Espero com isso, ajudar colegas que também estão na mesma situação. Deus abençoe vocês. :closedeyes:/> Compartilhar este post Link para o post Compartilhar em outros sites
Julio_Barros 1 Denunciar post Postado Dezembro 10, 2012 Boa noite amigos. Estou dando um UP nesse tópico para adicionar mais alguns códigos para ajudar o pessoal que esta iniciando como Eu. Escreva um algoritmo para repetir a leitura de um número enquanto o valor fornecido for diferente de 0. Para cada número fornecido, imprimir se ele é NEGATIVO ou POSITIVO. Quando o nú-mero 0 for fornecido a repetição deve ser encerrada sem imprimir mensagem alguma. OBS: Utilize uma estrutura de repetição condicional no final (Repita - Até). [Para os dados de entrada abaixo] [Deve ser gerada a seguinte saída] 4 POSITIVO -1 NEGATIVO 2 POSITIVO 6 POSITIVO -7 NEGATIVO -2 NEGATIVO 0 var num: inteiro inicio // Seção de Comandos num <- 1 Escreval ("Digite um numero") repita Leia (num) se num > 0 entao Escreval ("POSITIVO") fimse se num < 0 entao Escreval ("NEGATIVO") fimse ate num = 0 fimrepita fimalgoritmo Se acharem que pode simplificar usando o mesmo Laço, iria gostar muito que vocês me ajudassem. Deus Abençoe cada um de vocês. :closedeyes: Escreva outra versão do algoritmo para resolver o problema anterior utilizando a estrutura com teste de saída no início da repetição (Enquanto). var num: inteiro inicio // Seção de Comandos num <- 1 enquanto num <> 0 faca Escreval ("Digite um numero") Leia (num) se num > 0 entao Escreval ("POSITIVO") fimse se num < 0 entao Escreval ("NEGATIVO") fimse fimenquanto fimalgoritmo Lembrando ao pessoal que, se estiver errado, podem me corrigir, mas o Algoritmo esta funcionando aqui perfeito :thumbsup: Deus abençoe cada um de vocês. :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Dezembro 11, 2012 Olá amigo! Boa noite amigos. Estou dando um UP nesse tópico para adicionar mais alguns códigos para ajudar o pessoal que esta iniciando como Eu. Escreva um algoritmo para repetir a leitura de um número enquanto o valor fornecido for diferente de 0. Para cada número fornecido, imprimir se ele é NEGATIVO ou POSITIVO. Quando o nú-mero 0 for fornecido a repetição deve ser encerrada sem imprimir mensagem alguma. OBS: Utilize uma estrutura de repetição condicional no final (Repita - Até). [Para os dados de entrada abaixo] [Deve ser gerada a seguinte saída] 4 POSITIVO -1 NEGATIVO 2 POSITIVO 6 POSITIVO -7 NEGATIVO -2 NEGATIVO 0 var num: inteiro inicio // Seção de Comandos num <- 1 Escreval ("Digite um numero") repita Leia (num) [b]se[/b] num > 0 entao Escreval ("POSITIVO") [b]senao[/b] Escreval ("NEGATIVO") [b]fimse[/b] ate num = 0 fimrepita fimalgoritmo Se acharem que pode simplificar usando o mesmo Laço, iria gostar muito que vocês me ajudassem. Deus Abençoe cada um de vocês. :closedeyes:/> Escreva outra versão do algoritmo para resolver o problema anterior utilizando a estrutura com teste de saída no início da repetição (Enquanto). var num: inteiro inicio // Seção de Comandos num <- 1 enquanto num <> 0 faca Escreval ("Digite um numero") Leia (num) [b]se[/b] num > 0 entao Escreval ("POSITIVO") [b]senao[/b] Escreval ("NEGATIVO") [b]fimse[/b] fimenquanto fimalgoritmo Lembrando ao pessoal que, se estiver errado, podem me corrigir, mas o Algoritmo esta funcionando aqui perfeito :thumbsup:/> Deus abençoe cada um de vocês. :closedeyes:/> Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Julio_Barros 1 Denunciar post Postado Dezembro 11, 2012 Boa tarde Eisenheim. Se achar algo errado, posta ai amigo, pra eu ver aonde errei. No mais, eu estou com uma dúvida em um Exercício aqui, mas estou tentando resolver sozinho, se não conseguir de jeito nenhum, eu posto para você me dar uma ajuda com ele. :thumbsup: Deus te abençoe. :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Dezembro 11, 2012 Olá amigo! Na verdade a única observação é em relação ao SE SENAO FIMSE que alterei nas duas forma de fazer o segundo exercício que você postou. No mais está ótimo. Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Julio_Barros 1 Denunciar post Postado Dezembro 12, 2012 Boa noite pessoal. Levei algumas horas para resolver esse algoritmo, pois não sabia como encerrar o Algoritmo sem que ele mostrasse se o numero digitado era PAR ou IMPAR. Mas depois de muita insistência e um pouco de sorte, eu consegui. :wacko: Escreve um algoritmo para ler uma quantidade indeterminada de valores inteiros. Para cada valor fornecido escrever uma mensagem que indica se cada valor fornecido é PAR ou ÍMPAR. O algo-ritmo será encerrado imediatamente após a leitura de um valor NULO (zero) ou NEGATIVO. [Para os dados de entrada abaixo] [Deve ser gerada a seguinte saída] 11 IMPAR 3 IMPAR 2 PAR 10 PAR 5 IMPAR -2 // O meu problema foi nesse ultimo, pois ele precisaria encerrar o Algortimo sem mostrar se é PAR ou IMPAR, como esta no Exemplo para o teste. var num: inteiro inicio // Seção de Comandos num <- 1 enquanto (num > 0) faca Escreval ("Digite um numero") Leia (num) se (num > 0) e (num mod 2 = 0) entao Escreval ("PAR") senao se (num > 0) e (num mod 2 = 1) entao Escreval ("IMPAR") fimse fimse fimenquanto fimalgoritmo Por favor, se alguém souber de outra forma usando o ENQUANTO ou REPITA, mostrem para me ajudar. Deus abençoe vocês. :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Dezembro 12, 2012 Olá amigo! Ao meu ver você está desenvolvendo de forma bem progressiva a sua lógica. A única coisa que você tem que se atentar ao meu entendimento é em alguns detalhes que as vezes passam despercebidos, tais como: var num: inteiro inicio // Seção de Comandos num <- 1 enquanto (num > 0) faca Escreval ("Digite um numero") Leia (num) se (num mod 2 = 0) entao Escreval ("PAR") senao Escreval ("IMPAR") fimse fimenquanto fimalgoritmo Observe que na sua estrutura de repetição enquanto, você já está impondo uma condição onde ele só vai entrar dentro dele caso o num seja maior que zero. Nesse caso não é necessário repeti-la na estrutura de condição SE. Ao meu ver é isso, são apenas detalhes, mas que é normal e que você mesmo vai começar a notar a partir de agora. Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Julio_Barros 1 Denunciar post Postado Dezembro 12, 2012 Olá amigo! Ao meu ver você está desenvolvendo de forma bem progressiva a sua lógica. A única coisa que você tem que se atentar ao meu entendimento é em alguns detalhes que as vezes passam despercebidos, tais como: var num: inteiro inicio // Seção de Comandos num <- 1 enquanto (num > 0) faca Escreval ("Digite um numero") Leia (num) se (num mod 2 = 0) entao Escreval ("PAR") senao Escreval ("IMPAR") fimse fimenquanto fimalgoritmo Observe que na sua estrutura de repetição enquanto, você já está impondo uma condição onde ele só vai entrar dentro dele caso o num seja maior que zero. Nesse caso não é necessário repeti-la na estrutura de condição SE. Ao meu ver é isso, são apenas detalhes, mas que é normal e que você mesmo vai começar a notar a partir de agora. Até a próxima. :thumbsup:/> Bom dia Eisenheim. Eu testei desta forma também, mas quando eu digito 0 ou algum numero negativo, ele aparece também se é PAR ou IMPAR. E neste Exercício ele pede, para não aparecer nada, simplesmente fechar o programa. Foi por causa disso que fiz daquela forma. Foi a unica maneira que consegui encontrar para evitar que ele imprima se é PAR ou IMPAR quando for fechar o programa. Se você tiver outra explicação de como fazer, seria muito bem vinda :thumbsup: Mas queria que você ou alguém me tirasse uma duvida sobre outra questão. Estou em um outro exercício onde ele pede para o usuário digitar S para continuar ou N para encerrar. A minha duvida é, como faço para se o usuário no lugar de digitar S ou N digitar outra coisa, o programa dá um erro, tipo imprimir "RESPOSTA INVALIDA". Já montei o Algoritmo todo, mas não consigo encaixar essa repetição validando apenas para S ou N. Se puder me ajudar com essa duvida eu agradeço. Qualquer coisa, eu coloco o que já fiz. Deus te abençoe. :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Dezembro 12, 2012 Olá amigo! Referente ao seu exercício, adaptei para a sua necessidade: algoritmo "semnome" var num: inteiro inicio // Seção de Comandos repita Escreval ("Digite um numero") Leia (num) se num >= 0 entao se (num mod 2 = 0) entao Escreval ("PAR") senao Escreval ("IMPAR") fimse fimse ate num < 0 fimalgoritmo Referente ao exibir uma mensagem ao usuário caso a opção escolhida esteja inválida, depende da situação em que você vai tratar isso, se puder, poste o que você fez pra que eu possa encaixá-la no meio. Um exemplo: algoritmo "semnome" var opcao: caractere inicio // Seção de Comandos repita Escreval("Opção: S ou N") Leia( opcao ) se ( opcao <> "N" ) e ( opcao <> "S" ) entao Escreval("Opção digitada é inválida!") fimse ate ( opcao = "N" ) fimalgoritmo Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Julio_Barros 1 Denunciar post Postado Dezembro 12, 2012 Boa tarde Eisenheim. Em primeiro lugar, mais uma vez, muito obrigado pela sua ajuda e paciência. :worship: Veja o que pede a questão. Ler dois valores inteiros e imprimir o resultado da divisão do primeiro pelo segundo. Se o segundo valor informado for ZERO, deve ser impressa uma mensagem de VALOR INVÁLIDO e ser lido um novo valor. Ao final do programa deve ser impressa a seguinte mensagem: VOCE DESEJA OUTRO CÁLCULO (S/N). Se a resposta for S o programa devera retornar ao começo, caso con-trário deverá encerrar a sua execução imprimindo quantos cálculos foram feitos. OBS: O programa só deverá aceitar como resposta para a pergunta as letras S ou N. Fiz ate aqui: var num1, num2, cont: inteiro resul: real opcao: caracter inicio // Seção de Comandos opcao <- "s" enquanto opcao = "s" faca Escreval ("Digite o primeiro valor") Leia (num1) Escreval ("Digite o segundo valor") Leia (num2) se num2 = 0 entao repita Escreval ("VALOR INVÁLIDO") Escreval ("Digite o segundo valor") Leia (num2) ate num2 > 0 fimrepita fimse resul <- num1 / num2 Escreval ("O valor da divisão é: ",resul) Escreval ("VOCÊ DESEJA OUTRO CÁLCULO (S/N)?") Leia (opcao) cont <- cont + 1 fimenquanto Escreval ("Quantidade de Cálculos efetuado: ",cont) fimalgoritmo Com esse algoritmo, se o usuário digitar N, o programa fecha. Mas se ele digitar qualquer outra coisa, o programa retorna para o inicio. Já tentei fazer algo do tipo: se (opcao <= 0) ou (opcao > 0) faca Escreval ("INVALIDO") Mas parece que o programa não Lê essa parte do Algoritmo e continua aceitando qualquer numero ou letra para repetir o código. Não estou conseguindo validar para aceitar apenas S ou N. Muito obrigado. Deus te abençoe. :closedeyes: Compartilhar este post Link para o post Compartilhar em outros sites