Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Julio_Barros

Exercicios Resolvidos para auxiliar no aprendizado.

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.