Dúvida Exercício 40 (Repetições)

Home Fóruns Programação Básica Dúvida Exercício 40 (Repetições)

Marcado: ,

Visualizando 12 respostas da discussão
  • Autor
    Posts
    • #76691
      João Victor
      Participante

      Essa resolução está correta?

      programa
      {
      	
      inclua biblioteca Util --> u
      	funcao inicio()
      	{
          inteiro num1, num2, opcao = 0, soma1, sub, sub2, mult
      		escreva("==== CALCULADORA ====")
      		escreva("\nOperando 1 :")
      		leia(num1)
      		escreva("\nOperando 2: ")
      		leia(num2)
      
                escreva("-------------------------")
      		enquanto (opcao != 5) {
      			escreva("\n===== ESCOLHA UMA OPÇÃO ======")
      			escreva("\n[1] ADIÇÃO")
      			escreva("\n[2] SUBTRAÇÃO")
      			escreva("\n[3] MULTIPLICAÇÃO")
      			escreva("\n[4] ENTRAR COM NOVOS DADOS")
      			escreva("\n[5] SAIR")
      			escreva("\n>>>>> SUA OPÇÃO:")
      			leia(opcao)
      			escreva("----------------------------------")
      			se (opcao == 1) {
      				soma1 = num1 + num2
      				escreva( "\nCalculando " + num1 + " + " + num2)
      				escreva(" = " + soma1)
      			}
      		     se (opcao == 2 e num2 > num1) {
      		      	sub = num2 - num1
      		      	escreva( "\nCalculando " + num1 + " - " + num2)
      		      	escreva(" = " + sub)
      		     } 	
      		       senao se (opcao == 2 e num1 > num2 ou opcao == 2 e num1 == num2) {
      		      
      		      	escreva( "\nCalculando " + num1 + " - " + num2)	
      		          sub2 = num1 - num2
      		          escreva(" = " + sub2)
      		     }     
      		     se (opcao == 3) {
      		      	escreva("\nCalculando " + num1 + " * " + num2)
      		      	mult = num1 * num2
      		      	escreva(" = " + mult)
      		     } 	
      		     se (opcao ==4) {
      		      	escreva("\n==== CALCULADORA ====")
      		      	escreva("\nOperando 1 :")
      		      	leia(num1)
      		      	escreva("\nOperando 2 :")
      		      	leia(num2)	
      		    }se (opcao <0 ou opcao >5) {
      		    	     escreva("\nOpção Inválida")
      		    	     escreva("\nDigite Novamente") 
      		    }
      		     }
      		     escreva("\n===== SAINDO =====")
      	          escreva("\n===== VOLTE SEMPRE =====") 
      	} 
      }
      • Este tópico foi modificado 2 anos, 6 meses atrás por IcaroFilho.
    • #76756
      IcaroFilho
      Moderador

      Esta correto, podemos apenas melhorar alguns pontos quanto a subtração:
      No código atual tempos:
      ENTRADA: num1 = 9, num2 = 17
      SAIDA: Calculando 9 - 17 = 8, sendo que esta equação tem resultado negativo.
      Além do fato do do uso de memória sempre checando opcao == 2
      podemos resolver pondo uma condição aninhada a outra.

      se (opcao == 2){
          se (num1 > num2){
              escreva( "\nCalculando " , num1 , " - " , num2 , " = " , num1 - num2)
          } senao {
              escreva( "\nCalculando " , num2 , " - " , num1 , " = " , num2 - num1)
      }

      Uma observação:
      nas opções vc pode escreve-las como condições compostas.
      A razão é que se tratando do seu código atual, ele irá testar cada possibilidade mesmo a anterior já retornando verdadeira, agora quando escrevemos com condições compostas se ( ... ) { ... } senao se ( ... ) { ... } , só será averiguado as próximas condições caso a anterior retorno falso.

    • #76781
      João Victor
      Participante

      Obrigado!

    • #108456
      Tatiana Azer Maluf
      Participante

      Olá. Fiz um pouco diferente do colega acima na opção inválida. Precisei pedir novamente ao usuário que digitasse os 2 valores, caso contrário o programa oferece escolher a opção, mas como não tem os valores, não faz qualquer cálculo.
      Pergunto: está correta essa análise?
      Segue o código:

      programa
      {
      	
      	funcao inicio()
      	{
      		escreva ("{ EXERCÍCIO 040 - Calculadora }\n")
      		inteiro n1, n2, soma, sub, mult, op = 0
      		escreva ("\nPrimeiro número: ")
      			leia (n1)
      			escreva ("Segundo número: ")
      			leia (n2)
      		enquanto (op != 5) {
      			escreva ("===== ESCOLHA UMA OPERAÇÃO =====")
      			escreva ("\n[1] Adição")
      			escreva ("\n[2] Subtração")
      			escreva ("\n[3] Multiplicação")
      			escreva ("\n[4] Entrar com novos dados")
      			escreva ("\n[5] Sair")
      			escreva ("\n>>>>> SUA OPÇÃO: ")
      			leia (op)
      			soma = n1 + n2
      			sub = n1 - n2
      			mult = n1 * n2
      			se (op == 1) {
      				escreva ("---------------------------")
      	 			escreva ("\n" + n1 + " + " + n2 + " = " + soma)
      				escreva ("\n---------------------------") }
      			se (op == 2) {
      				escreva ("---------------------------")
      	 			escreva ("\n" + n1 + " - " + n2 + " = " + sub)
      				escreva ("\n---------------------------") }
      			se (op == 3) {
      				escreva ("---------------------------")
      	 			escreva ("\n" + n1 + " * " + n2 + " = " + mult)
      				escreva ("\n---------------------------")	}
      			se (op == 4) {
      				escreva ("\nPrimeiro número: ")
      					leia (n1)
      				escreva ("Segundo número: ")
      					leia (n2) 
      			}
      			se (op == 5) {
      				escreva (" ==== SAINDO ====")
      				escreva ("\n ====VOLTE SEMPRE ====")
      				
      
      			}
      			se (op > 5) {
      				escreva ("\nOpção inválida")
      				escreva ("\nDigite novamente\n")
      				escreva ("\nPrimeiro número: ")
      					leia (n1)
      				escreva ("Segundo número: ")
      					leia (n2) 
      			}
      			escreva ("\n\n")
      			}
      		
      		}
      	}
    • #108457
      Tutora Jessica
      Moderador

      Ola Tatiana, nessa forma que você fez não esta errado, você inclusive encontrou uma solução para o seu “problema”, caso queira deixar o código menor, você pode usar o escolha/caso.

    • #113098

      Jéssica pode dar uma olha no meu código está um pouquinho extenso, mas funciona.

      funcao inicio()
      {
      inteiro n1= 0, n2 = 0, adicao, subtracao, mult, op = 1

      enquanto (op != 9999){
      escreva(“Operando 1: “)
      leia(n1)
      escreva(“Operando 2: “)
      leia(n2)

      escreva(“\n\n”)
      escreva(“======= ESCOLHA UMA OPÇÃO ======”)
      escreva(“\n[ 1 ] Adição”)
      escreva(“\n[ 2 ] Subtração”)
      escreva(“\n[ 3 ] Multiplicação”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n==================”)
      escreva(“\n>>>>> SUA OPÇÃO: ” )
      leia(op)

      se(op == 1){
      adicao = n1 + n2
      escreva(“\n———————————-“)
      escreva(“\nCalculando ” + n1 + ” + ” + n2 + ” = ” + adicao)
      escreva(“\n———————————-“)
      escreva(“\n\n”)
      escreva(“======= ESCOLHA UMA OPÇÃO ======”)
      escreva(“\n[ 1 ] Adição”)
      escreva(“\n[ 2 ] Subtração”)
      escreva(“\n[ 3 ] Multiplicação”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n==================”)
      escreva(“\n>>>>> SUA OPÇÃO: ” )
      leia(op)

      }

      se(op == 2){
      subtracao = n1 – n2
      escreva(“\n———————————-“)
      escreva(“\nCalculando ” + n1 + ” – ” + n2 + ” = ” + subtracao)
      escreva(“\n———————————-“)
      escreva(“\n\n”)
      escreva(“======= ESCOLHA UMA OPÇÃO ======”)
      escreva(“\n[ 1 ] Adição”)
      escreva(“\n[ 2 ] Subtração”)
      escreva(“\n[ 3 ] Multiplicação”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n==================”)
      escreva(“\n>>>>> SUA OPÇÃO: ” )
      leia(op)
      }

      se (op == 3){
      mult = n1 * n2
      escreva(“\n———————————-“)
      escreva(“\nCalculando ” + n1 + ” x ” + n2 + ” = ” + mult)
      escreva(“\n———————————-“)
      escreva(“\n======= ESCOLHA UMA OPÇÃO ======”)
      escreva(“\n[ 1 ] Adição”)
      escreva(“\n[ 2 ] Subtração”)
      escreva(“\n[ 3 ] Multiplicação”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n==================”)
      escreva(“\n>>>>> SUA OPÇÃO: ” )
      leia(op)
      }

      se ( op == 4 e op == 9999){
      escreva(“Operando 1: “)
      leia(n1)
      escreva(“Operando 2: “)
      leia(n2)
      escreva(“\n\n”)
      escreva(“======= ESCOLHA UMA OPÇÃO ======”)
      escreva(“\n[ 1 ] Adição”)
      escreva(“\n[ 2 ] Subtração”)
      escreva(“\n[ 3 ] Multiplicação”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n==================”)
      escreva(“\n>>>>> SUA OPÇÃO: ” )
      leia(op)

      }

      se (op == 5){
      escreva(“==== SAINDO ====”)
      escreva(“\n==== VOLTE SEMPRE ====”)
      pare
      }

      se (op == 7){
      escreva(“==== OPÇÃO INVÁLIDA ====”)

      }

      }

      }

    • #113137
      Tutora Jessica
      Moderador

      Ola Miguel, seu código esta funcionando direitinho, mas é válido que estude mais sobre estruturas de repetição.
      O que exercício aborda é você testar seus conhecimentos dessas estruturas.
      Bons estudos 🖖

    • #113727

      Jessica, poderia verificar se está correto a estrutura do programa.

      programa
      {

      funcao inicio()
      {
      inteiro n1 = 0, n2 = 0, adi = 0, sub = 0, multi = 0
      inteiro n3 = 0

      escreva(“Operando 1: “)
      leia(n1)
      escreva(“Operando 2: “)
      leia(n2)

      enquanto ( n3 != 5){

      escreva(“\n======== ESCOLHA UMA OPERAÇÃO ========\n”)
      escreva(“[ 1 ] Adição\n”)
      escreva(“[ 2 ] Subtração\n”)
      escreva(“[ 3 ] Multiplicação\n”)
      escreva(“[ 4 ] Entrar com novos dados\n”)
      escreva(“[ 5 ] Sair\n”)
      escreva(“>>>>> SUA OPÇÂO: “)
      leia(n3)

      se (n3 == 1){
      adi = n1 + n2
      escreva(“———————————–\n”)
      escreva(“Calculando “,n1, ” + “, n2, ” = “, adi)
      escreva(“\n———————————–\n”)
      }
      senao se (n3 == 2){
      sub = n1 – n2
      escreva(“———————————–\n”)
      escreva(“Calculando “,n1, ” – “, n2, ” = “, sub)
      escreva(“\n———————————–\n”)
      }
      senao se (n3 == 3){
      multi = n1 * n2
      escreva(“———————————–\n”)
      escreva(“Calculando “,n1, ” x “, n2, ” = “, multi)
      escreva(“\n———————————–\n”)
      }
      senao se (n3 == 4){
      escreva(“\nOperando 1: “)
      leia(n1)
      escreva(“Operando 2: “)
      leia(n2)

      }
      se (n3 > 5){
      escreva(“\n======== OPÇÃO INVÁLIDA ========\n”)

      }

      }
      escreva(” ======== SAINDO ========\n”)
      escreva(” ======== VOLTE SEMPRE ========\n”)

      }
      }

    • #113738
      Tutora Jessica
      Moderador

      Ola Matheus, a proposta desse exercício é vocês usarem o escolha/caso.

    • #120136

      Jesus amado, o meu programa tá em looping infinito por causa do enquanto e nao sei como sair dele, já até tentei criar outra variável e tentar inverter a ordem, mas nao tem como ;-;
      Embaixo segue o modelo doq fiz
      inteiro opc = 0
      caracter n
      enquanto(opc != 5)

      escreva(“\n====== ESCOLHA UMA OPERAÇAO ====”)
      escreva(“\n[ 1 ] Adiçao”)
      escreva(“\n[ 2 ] Subtraçao”)
      escreva(“\n[ 3 ] Multiplicaçao”)
      escreva(“\n[ 4 ] Entrar com novos dados”)
      escreva(“\n[ 5 ] Sair”)
      escreva(“\n>>>>> SUA OPÇAO: “)
      leia(n)

      se (n == ‘1’){
      inteiro soma = op1 + op2
      escreva(“\n—————————————-“)
      escreva(“\nCalculando “, op1, ” + “, op2,” = “, soma)
      escreva(“\n—————————————-“)
      }

    • #120139
      Tutora Jessica
      Moderador

      Ola Gustavo, trouxe a sua dúvida para uma já existente no fórum, peço para que sempre que for postar sua dúvida analise se já não tem criado uma do mesmo exercício, para que possamos deixar nosso fórum mais organizado e assim ajudar outros alunos.
      Veja se nos exemplos e explicações acima você consegue encontrar o problema do seu código, se caso não consiga encontrar só retornar o contato por aqui que iremos lhe ajudar.
      Bons estudos 🖖

    • #125722
      Filipe Mamud Oliveira
      Participante

      Ola novamente Jéssica,

      Eu fiz o exercicio e ele não carece de logica além de os resultados serem exatos, porém meu codigo foi diferente dos demais. Vou coloca-lo aqui e se você tiver algum conselho por favor me diga :

      programa
      {

      funcao inicio()
      {
      escreva(” { EXERCICIO 40 – Calculadora } “)
      inteiro op1, op2, n

      escreva(“\n”)
      escreva(“Operando 1: “)
      leia(op1)
      escreva(“Operando 2: “)
      leia(op2)
      escreva(“\n===== ESCOLHA UMA OPERACÃO =====”)
      escreva(“\n[1] \tAdição”)
      escreva(“\n[2] \tSubtração”)
      escreva(“\n[3] \tMultiplicação”)
      escreva(“\n[4] \tEntrar com novos dados”)
      escreva(“\n[5] \tSair”)
      escreva(“\n>>>>> Sua Opção: “)
      leia(n)

      enquanto (n!=5) {

      se (n == 1 ) {
      escreva(“Calculando: “, op1, ” + “, op2, ” = “, (op1 + op2), “\n”)
      }
      se (n == 2 ) {
      escreva(“Calculando: “, op1, ” – “, op2, ” = “, (op1 – op2), “\n”)
      }
      se (n == 3 ) {
      escreva(“Calculando: “, op1, ” * “, op2, ” = “, (op1 * op2), “\n”)
      }
      se (n == 4 ) {
      escreva(“\n”)
      escreva(“Operando 1: “)
      leia(op1)
      escreva(“Operando 2: “)
      leia(op2)
      }
      se (n > 5) {
      escreva(“===== Opção Invalida =====\n”)
      }
      escreva(“\n===== ESCOLHA UMA OPERACÃO =====”)
      escreva(“\n[1] \tAdição”)
      escreva(“\n[2] \tSubtração”)
      escreva(“\n[3] \tMultiplicação”)
      escreva(“\n[4] \tEntrar com novos dados”)
      escreva(“\n[5] \tSair”)
      escreva(“\n>>>>> Sua Opção: “)
      leia(n)

      }
      escreva(“\n===== SAINDO =====”)
      escreva(“\n===== VOLTE SEMPRE =====”)
      }
      }

    • #125753
      Tutora Jessica
      Moderador

      Olá Filipe, testei e seu código esta funcionado perfeitamente, não precisa ficar igual a todos, o importante é você entender.
      Bons estudos 🖖🏻

Visualizando 12 respostas da discussão
  • Você deve fazer login para responder a este tópico.