Ir ao conteúdo
  • Cadastre-se

VisualG Calculadora que faz operações básicas


Posts recomendados

Bom dia a todos,

 

Sou novo aqui, e estou precisando de ajuda.

Tenho que fazer esse projeto até segunda mas não consigo desenrolar

 

1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair 
 
Peça para o usuário digitar o número desejado e, logo em seguida, os dois números para a operação. Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação. Apresente o resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: 3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe o usuário digitar o denominador zero, pois não existe divisão por zero. Portanto, peça para ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer em um laço de repetição até o usuário digitar 5 (que é a opção de sair). 

 

Fiz até aqui

Inicio
   escreva ("Digite a opcao desejada: ")
   escreval("                 ")
   escreval("1.Soma")
   escreval("2.Subtração")
   escreval("3.Divisão")
   escreval("4.Multiplicação")
   escreval("5.Sair")
   escreval("                 ")
   leia (menu)
   escolha menu
   caso ("1")
      escreva ("Digite o 1º numero:")
      leia (a)
      escreva ("Digite o 2º numero:")
      leia (b)
      z <- a+b
      escreval ("O resultado é ",z)
      repita (menu)

      caso ("2")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a-b
         escreval ("O resultado é ",z)

      caso ("3")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a/b
         escreval ("O resultado é ",z)

      caso ("4")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a*b
         escreval ("O resultado é ",z)

      caso ("5")
         escreval ("Encerrar calculos")
fimalgoritmo

 

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá, @Alexsander Romandini.

 

Dicas gerais:

1. O código *sempre* deve está rodável. Ele não deve rodar apenas na parte que você está com dúvidas;

2. Vá fazendo o algoritmo aos poucos;

3. Procure seguir estritamente o enunciado.

 

Como já tem uma base... vou tentar reformular seguindo esse princípios acima.

 

Pode começar com o esqueleto base:

algoritmo "Calculadora que faz operações básicas"
inicio

fimalgoritmo

 

 

Eu sugiro já inserir uns comentários complementares. (Pelo menos o enunciado... ajuda para criar o algoritmo.)

 

algoritmo "Calculadora que faz operações básicas"
// Disciplina  : <preencha o dado>
// Professor   : <preencha o dado>
// Descrição   : Calculadora que faz operações básicas: Adição, Subtração
//               Divisão e Multiplicação
// Autor(a)    : Alexsander Romandini
// Data versão : 21/05/2021

//ENUNCIADO
//1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair
//Peça para o usuário digitar o número desejado e, logo em seguida, os dois
//números para a operação. Guarde os números digitados pelo usuário em um vetor
//de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene
//o segundo número e na posição 3 armazene o resultado da operação. Apresente o
//resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo:
//3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe ousuário digitar
//o denominador zero, pois não existe divisão por zero. Portanto, peça para
//ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer
//em um laço de repetição até o usuário digitar 5 (que é a opção de sair).
inicio

fimAlgoritmo

 

Se você rodar esses códigos... eles vão funcionar... apenas não vão fazer algo... já ainda não foi feito nada relevante...

 

Pronto.. para ir implementando o código, é necessário primeiro entender todo o enunciado. Tenha isso em mente:

 

Para resolver um problema, é necessário entender o problema antes

 

 

Tem lá um ponto notável: 

 

2 horas atrás, Alexsander Romandini disse:

Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação

 

Ou seja: os dados precisam ficar no vetor.

 

Observe que o escolha/caso deveria servir apenas para "selecionar" qual operação vai fazer... você pode então ler primeiro todos os "dados externos" e depois efetuar os tratamentos. Algo como:

 

Esboço inicial:

 

var
   menu: caractere
   x, y: real

inicio
   escreva ("Digite a opcao desejada: ")
   escreval("")
   escreval("1. Adição")
   escreval("2. Subtração")
   escreval("3. Divisão")
   escreval("4. Multiplicação")
   escreval("")
   escreval("5. Sair")
   escreval("")
   leia(menu)

   escreval("")
   escreva ("Digite o 1º numero: ")
   leia(x)
   escreva ("Digite o 2º numero: ")
   leia(y)


fimAlgoritmo

 

Daí, como ele quer os dados no vetor, insere neles:

 

algoritmo "Calculadora que faz operações básicas"
// Disciplina  : <preencha o dado>
// Professor   : <preencha o dado>
// Descrição   : Calculadora que faz operações básicas: Adição, Subtração
//               Divisão e Multiplicação
// Autor(a)    : Alexsander Romandini
// Data versão : 21/05/2021

//ENUNCIADO
//1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair
//Peça para o usuário digitar o número desejado e, logo em seguida, os dois
//números para a operação. Guarde os números digitados pelo usuário em um vetor
//de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene
//o segundo número e na posição 3 armazene o resultado da operação. Apresente o
//resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo:
//3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe ousuário digitar
//o denominador zero, pois não existe divisão por zero. Portanto, peça para
//ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer
//em um laço de repetição até o usuário digitar 5 (que é a opção de sair).

var
   menu: caractere
   x, y: real
   vetDados: vetor [1..5] de real

inicio
   escreva ("Digite a opcao desejada: ")
   escreval("")
   escreval("1. Adição")
   escreval("2. Subtração")
   escreval("3. Divisão")
   escreval("4. Multiplicação")
   escreval("")
   escreval("5. Sair")
   escreval("")
   leia(menu)

   escreval("")
   escreva ("Digite o 1º numero: ")
   leia(x)
   escreva ("Digite o 2º numero: ")
   leia(y)

   vetDados[1] <- x
   vetDados[2] <- y

   escolha menu
   caso "1"
      vetDados[3] <- x+y
   caso "2"
      vetDados[3] <- x-y

   fimEscolha

   escreval("Conteúdo de vetDados[3]: ", vetDados[3]:1:3)

fimAlgoritmo

 

 

Tenha ciência que tudo isso são esboços... a medida que vai incrementando coisas, vai ajustando aqui e ali... mas sempre vá deixando funcionável. O código tem que ir crescendo com lógica... NUNCA TENTE FAZER TUDO DE UMA VEZ.

 

Perceba do já foi sugerido acima... eu estou tentando seguir estritamente o enunciado. Exemplo do que já tem em negrito:

 

3 horas atrás, Alexsander Romandini disse:

Peça para o usuário digitar o número desejado e, logo em seguida, os dois números para a operação. Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação. Apresente o resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: 3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe o usuário digitar o denominador zero, pois não existe divisão por zero. Portanto, peça para ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer em um laço de repetição até o usuário digitar 5 (que é a opção de sair). 

 

Não necessariamente precisar ser em ordem... poderia criar logo laço de repetição, por exemplo.

 

Daí você pode ir implementando outra coisa... como inserir as outras 2 opção do menu; OU formatar o texto de saída; OU inserir o laço de repetição; etc.

 

Domine bem o enunciado. Entenda cada uma das partes. E vá refatorando o código. O que você achar que não está certo, vá mudando... mas sempre seguindo os requisitos que está no enunciado e deixando funcionando.

 

Vá sempre testando.. a medida que vai ganhando experiência, vai cada vez fazer menos teste... mas é normal não conseguir fazer logo de primeira.. é para isso que serve os exercícios.

 

Tente fazer alguma coisa, poste o código completo e a parte que, no momento, não conseguiu resolver sozinho.

 

No aguardo.

 

ADENDO: o vetor precisa apenas de 3 posições. Estou com preguiça de editar.

ADENDO 2:

3 horas atrás, Alexsander Romandini disse:

repita (menu)

 

A base da ideia faz sentido.. mas está fugindo da sintaxe do VisualG e dos conceito do paradigma do Português Estruturado... a repetição basicamente funciona deixando o que você quer que repita dentro de uma estrutura de repetição. Como ainda não domina essa parte, pode deixa para o fim. Faça o programa como se não existisse essa necessidade de repetir. Depois explicamos como fazer.. mas veja: se inventar de inserir repetição, tem que deixar funcionado!!! Pela amor... não tente inserir repetição e outra coisa ao mesmo tempo deixando ambos sem funcionar!, rs. Resumindo: esqueça a repetição por enquanto.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Boa noite, Simon Viegas

 

Obrigado pela ajuda!!!

Mas em alguns pontos ainda estou bem confuso: 1- Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação. 2- Apresente o resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: 3 + 5 = 8 . 3 - Tome cuidado com a operação de divisão, não deixe o usuário digitar o denominador zero, pois não existe divisão por zero. Portanto, peça para ele digitar novamente, caso isso aconteça. ( Já tente colocar " SE" e não consegui. 4 -  A calculadora deverá permanecer em um laço de repetição até o usuário digitar 5 (que é a opção de sair). ( por isso tentei colocar o "REPITA" mas também não funcionou. 

 

Por favor, me ajuda com mais alguns toques porque estou sem direção alguma, tudo isso que já fiz foi revisando as aulas e pesquisando na internet.

 

 

 

Link para o comentário
Compartilhar em outros sites

@Alexsander Romandini   esse código que você postou , está faltando as variáveis  , e o repita seria assim 

Algoritmo "calculadora simples com vetor"
var
 vet  : vetor[1..3] de real
 menu : caractere
Inicio
  repita
   escreva ("Digite a opcao desejada: ")
   escreval("                 ")
   escreval("1.Soma")
   escreval("2.Subtração")
   escreval("3.Divisão")
   escreval("4.Multiplicação")
   escreval("5.Sair")
   escreval("                 ")
   leia (menu)
   escolha menu
   caso ("1")
      escreva ("Digite o 1º numero:")
      leia (a)
      escreva ("Digite o 2º numero:")
      leia (b)
      z <- a+b
      escreval ("O resultado é ",z)
      repita (menu)

      caso ("2")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a-b
         escreval ("O resultado é ",z)

      caso ("3")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a/b
         escreval ("O resultado é ",z)

      caso ("4")
         escreval ("Digite o 1º numero:")
         leia (a)
         escreval ("Digite o 2º numero:")
         leia (b)
         z <- a*b
         escreval ("O resultado é ",z)

      caso ("5")
         escreval ("Encerrar calculos")
      fimescolha
      ate menu = "5"
fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa noite, @Simon Viegas @devair1010

 

Obrigado pela ajuda!!!

Mas em alguns pontos ainda estou bem confuso: 1- Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação. 2- Apresente o resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: 3 + 5 = 8 . 3 - Tome cuidado com a operação de divisão, não deixe o usuário digitar o denominador zero, pois não existe divisão por zero. Portanto, peça para ele digitar novamente, caso isso aconteça. ( Já tente colocar " SE" e não consegui. 4 -  A calculadora deverá permanecer em um laço de repetição até o usuário digitar 5 (que é a opção de sair). ( por isso tentei colocar o "REPITA" mas também não funcionou. 

 

Por favor, me ajudem com mais alguns toques porque estou sem direção alguma, tudo isso que já fiz foi revisando as aulas e pesquisando na internet.

@Simon Viegas @devair1010

 

Desculpa ficar incomodando mas estou apavorado correndo contra o tempo e não consigo desenrolar isso


algoritmo "Calculadora que faz operações básicas" // Disciplina : <preencha o dado> // Professor : <preencha o dado> // Descrição : Calculadora que faz operações básicas: Adição, Subtração // Divisão e Multiplicação // Autor(a) : Alexsander Romandini // Data versão : 21/05/2021 //ENUNCIADO //1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair //Peça para o usuário digitar o número desejado e, logo em seguida, os dois //números para a operação. Guarde os números digitados pelo usuário em um vetor //de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene //o segundo número e na posição 3 armazene o resultado da operação. Apresente o //resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: //3 + 5 = 8 Tome cuidado com a operação de divisão, não deixe ousuário digitar //o denominador zero, pois não existe divisão por zero. Portanto, peça para //ele digitar novamente, caso isso aconteça. A calculadora deverá permanecer //em um laço de repetição até o usuário digitar 5 (que é a opção de sair

Var
menu: caracter
num :vetor [1..3] de real (não consigo colocar o vetor para cada numero)
 a, b, z: real


Inicio
  repita
  escreval("                 ")
  escreva ("Digite a opcao desejada: ")
  escreval("                 ")
  escreval("1.Soma")
  escreval("2.Subtração")
  escreval("3.Divisão")
  escreval("4.Multiplicação")
  escreval("5.Sair")
  escreval("                 ")
  leia (menu)
  escolha menu

    caso ("1")
        escreva ("Digite o 1º numero:")
        leia (a)
        escreva ("Digite o 2º numero:")
        leia (b)
        z <- a+b
        escreval ("O resultado é =",z)

        
     caso ("2")
        escreval ("Digite o 1º numero:")
        leia (a)
        escreval ("Digite o 2º numero:")
        leia (b)
        se (b <= 0) entao  (não consigo colocar essa obs. caso coloquem zero)
         escreval ("digite novo numero:")
        z <- a-b
        escreval ("O resultado é ",z)

     caso ("3")
        escreval ("Digite o 1º numero:")
        leia (a)
        escreval ("Digite o 2º numero:")
        leia (b)
        se (b)
        z <- a/b
        escreval ("O resultado é ",z)
        
     caso ("4")
        escreval ("Digite o 1º numero:")
        leia (a)
        escreval ("Digite o 2º numero:")
        leia (b)
        z <- a*b
        escreval ("O resultado é ",z)

        caso ("5")
         escreval ("Encerrar calculos")
      fimescolha
      ate menu = "5"
fimalgoritmo

 

não quero que façam pra mim mas preciso de ajuda de como fazer pelo os exemplos acima não consegui entender,

 

Desde ja agradeço.

Link para o comentário
Compartilhar em outros sites

@Alexsander Romandini     ok , entendi , mas o melhor modo de explicar é mostrar como fazer ,  e aqui um código incompleto , mas que funciona , e deixo o restante , as outras operações , para você fazer , 

Algoritmo "calculadora simples com vetor"
var
  vet  : vetor[1..3] de real
  a,b  : real
  menu : caractere
Inicio
  repita
    menu <- "0"
    escreva ("Digite a opcao desejada: ")
    escreval
    escreval(" 1 . Soma")
    escreval(" 2 . Subtração")
    escreval(" 3 . Divisão")
    escreval(" 4 . Multiplicação")
    escreval(" 5 . Sair Do Programa")
    escreva ("    \> ")
    enquanto (menu < "1" ) ou (menu > "5" ) faca
      leia (menu)
    fimenquanto
    se menu = "5" entao               // se digitou sair então 
      escreval                        // pular para a linha de baixo  
      escreval                        // pular para a linha de baixo  
      escreval("Encerrar calculos . . . !") // Msg
      escreval                        // pular para a linha de baixo  
      escreval                        // pular para a linha de baixo  
      fimalgoritmo                    // o interrompa seria melhor mas
    fimse                             // não Quis funcionar bem não ! !
    escreva ("Digite o 1º numero:")   // pega os numeroS fora do caso
    leia (a)
    escreva ("Digite o 2º numero:")   // nao precisa repetir esse trecho
    leia (b)                          // do código varias vezes nao
    enquanto ( b = 0 ) e ( menu = "3" ) faca
      escreval
      escreval("Impossível dividir por Zero !")
      escreval("digite novamente o divisor   ")
      leia( b )
    fimenquanto
    vet[1] <- a                       // inserir a no vetor vet , na posicao 1
    vet[2] <- b                       // inserir b no vetor vet , na posicao 2
    escolha menu
    caso "1"
      vet[3] <- a + b                 // inserir resultado no vetor vet ,
                                      // posicao 3
                                      // colchets contem a posição  no vetor
                                      // escreval ("O resultado é ",z)   nao 
                                      // precisa repetir esse trecho do codigo
    outrocaso
      escreval("Opção InvAlida !")    // Msg
    fimescolha
    escreval ("O resultado é ",vet[3])// mostra o ResultaDo
    escreval                          // pular para a linha de baixo  
    escreval                          // pular para a linha de baixo  
  ate menu = "5"                      // até digitar 5
fimalgoritmo                          // segundo fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

bom dia @devair1010

 

Desculpa ficar incomodando, consegui chegar ate aqui, só falta terminar a divisão

 

Var
menu: caracter
num :vetor [1..3] de real
//num1, num2, num3: real


Inicio
  repita
  escreval("                 ")
  escreva ("Digite a opcao desejada: ")
  escreval("                 ")
  escreval("1.Soma")
  escreval("2.Subtração")
  escreval("3.Divisão")
  escreval("4.Multiplicação")
  escreval("5.Sair")
  escreval("                 ")
  leia (menu)
  escolha menu

  caso ("1")
        escreva ("Digite o 1º numero:")
        leia (num[1])
        escreva ("Digite o 2º numero:")
        leia (num[2])
        num[3] <- num[1]+num[2]
        escreval (num[1], " + " ,num[2], " = ", num[3])

    caso ("2")
        escreval ("Digite o 1º numero:")
        leia (num[1])
        escreval ("Digite o 2º numero:")
        leia (num[2])
        num[3] <- num[1]-num[2]
        escreval (num[1], " - " ,num[2], " = ", num[3])

     caso ("3")
        escreval ("Digite o 1º numero:")
        leia (num[1])
        escreval ("Digite o 2º numero:")
        leia (num[2])
        enquanto ( num[2] = 0 ) e ( menu = "3" ) faca
        escreval("Impossível dividir por Zero !")
        escreval("digite novamente o divisor " )
        leia (num[2])
        num[3] <- num[1]/num[2]
        escreval (num[1], " / " ,num[2], " = ", num[3])
        
     caso ("4")
        escreval ("Digite o 1º numero:")
        leia (num[1])
        escreval ("Digite o 2º numero:")
        leia (num[1])
        num[3] <- num[1]*num[2]
        escreval (num[1], " * " ,num[2], " = ", num[3])

        caso ("5")
         escreval ("Encerrar calculos")
      fimescolha
      ate menu = "5"

fimalgoritmo

 

obrigado.

.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Alexsander Romandini    não se preocupe  pode pedir ajuda quantas vezes precisar ,  ajudaremos com prazer ,  para mim isso é diversão ,  mas seu código ficou bom, e quase funcionou bem , apenas a divisão tem um pequeno erro , no enquanto , pois tudo tem um início e tem um fim , e foi isso que faltou , o "fimenquanto" ,

"fimenquanto" ,

 

e seu caso 3 poderia ser assim

caso ("3")
  escreval ("Digite o 1º numero:")
  leia (num[1])
  escreval ("Digite o 2º numero:")
  leia (num[2])
  enquanto ( num[2] = 0 ) e ( menu = "3" ) faca
    escreval("Impossível dividir por Zero !")
    escreval("digite novamente o divisor " )
    leia (num[2])
  fimenquanto  // precisa do fimenquanto
  num[3] <- num[1]/num[2]
  escreval (num[1], " / " ,num[2], " = ", num[3])
caso "4"  

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Alexsander Romandini, você está repetindo a leitura dos números várias vezes. Não precisa (não deveria). Veja:

 

Atual:

21 horas atrás, Alexsander Romandini disse:


  escreval("                 ")
  leia (menu)
  escolha menu

  caso ("1")
        escreva ("Digite o 1º numero:")
        leia (num[1])
        escreva ("Digite o 2º numero:")
        leia (num[2])
        num[3] <- num[1]+num[2]
        escreval (num[1], " + " ,num[2], " = ", num[3])

    caso ("2")
        escreval ("Digite o 1º numero:")
        leia (num[1])
        escreval ("Digite o 2º numero:")
        leia (num[2])
        num[3] <- num[1]-num[2]
        escreval (num[1], " - " ,num[2], " = ", num[3])

 

 

Observe que está fazendo a mesma coisa em cada um dos casos... bastaria ler antes do escolha. Exemplo:

 

 

      escreval("5.Sair")
      escreval("")
      leia(menu)

      escreva ("Digite o 1º numero:")
      leia(num[1])
      escreva ("Digite o 2º numero:")
      leia(num[2])

      escolha menu
      caso ("1")
         num[3] <- num[1]+num[2]
         escreval(num[1], " +", num[2], " =", num[3])
         
      caso ("2")
         num[3] <- num[1]-num[2]
         escreval(num[1], " -", num[2], " =", num[3])

 

Observe que depois dos símbolos da operações e depois "=" foram removidos os espaços... pois o VisualG já insere um espaço automaticamente antes dos números (ainda não consegui entender o motivo disso :(), ou seja: se deixar, vão ficar 2 espaços... fica visualmente feio. Qualquer coisa faça o teste e perceba a diferença.

 

 

 

Só uns detalhes:

 

Adendo 1:

Sobre:

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

pois não existe divisão por zero

 

Dizer que "não existe" seria imprecisão... na verdade as divisões por zero são "indeterminadas", ou, no caso especial da divisão 0 por 0, seria "indefinida". Que são coisas diferentes de "não existente". De um modo geral, em vez de dizer "impossível", sugeriria utilizar "não é possível". Pelo menos soa mais leve, rs.

 

 

Para efeitos de demonstração:

 

5/0:

image.png

 

Mas já 0/0:

 

image.png

 

 

 

Adendo 2:

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

1. Soma 2. Subtração 3. Divisão 4. Multiplicação 5. Sair 

 

No enunciado fala-se em "soma", mas no contexto do problema (exercício) esse termo estaria impreciso também. Soma seria o "resultado" da adição. Chamar a adição de soma, seria o mesmo que chamar a multiplicação de produto; ou a divisão de quociente; ou a subtração de resto etc. :D

 

Mas se no enunciado tem "soma", utilize "soma" mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@Simon Viegas, segue o código completo, entreguei assim!!!

 

Tirei uma excelente nota, obrigado por tudo.

 

Algoritmo "calculadora PTI"

Var
   menu: caracter
   num :vetor [1..3] de real

Inicio
   repita
      escreval("         ")
      escreva ("Digite a opção desejada: ")
      escreval("         ")
      escreval("1.Soma")
      escreval("2.Subtração")
      escreval("3.Divisão")
      escreval("4.Multiplicação")
      escreval("5.Sair")
      escreval("         ")
      leia (menu)
      escolha menu

      caso ("1")
         escreva ("Digite o 1º numero:")
         leia (num[1])
         escreva ("Digite o 2º numero:")
         leia (num[2])
         num[3] <- num[1]+num[2]
         escreval ( num[1] , "+" ,num[2], "=",num[3])

      caso ("2")
         escreva ("Digite o 1º numero:")
         leia (num[1])
         escreva ("Digite o 2º numero:")
         leia (num[2])
         num[3] <- num[1]-num[2]
         escreval ( num[1] , "-" ,num[2], "=",num[3])

      caso ("3")
         escreva ("Digite o 1º numero:")
         leia (num[1])
         escreva ("Digite o 2º numero:")
         leia (num[2])
         enquanto ( num[2] = 0 ) e ( menu = "3" ) faca
            escreval("Impossível dividir por Zero !")
            escreval("digite novamente o divisor " )
            leia (num[2])
         fimenquanto
         num[3] <- num[1]/num[2]
         escreval ( num[1] , "/", num[2], "=",num[3])

      caso ("4")
         escreva ("Digite o 1º numero:")
         leia (num[1])
         escreva ("Digite o 2º numero:")
         leia (num[2])
         num[3] <- num[1]*num[2]
         escreval ( num[1] , "*" ,num[2], "=",num[3])

      caso ("5")
         escreval ("Obrigado por usar nossa calculadora, Volte sempre!!!")
      fimescolha
   ate menu = "5"
fimalgoritmo

 

Atendeu a todos os requisitos pedidos no enunciado. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Alexsander Romandini, como já está entregue, vou tentar reanalisar ponto a ponto:

 

1# Sobre a leitura dos números

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

Peça para o usuário digitar o número desejado e, logo em seguida, os dois números para a operação.

 

A leitura dos números no seu código está repetitiva. Veja:

10 horas atrás, Alexsander Romandini disse:


      leia (menu)
        
      escolha menu
      caso ("1")
         escreva ("Digite o 1º numero:")
         leia(num[1])
         escreva ("Digite o 2º numero:")
         leia(num[2])
         num[3] <- num[1]+num[2]
         escreval( num[1] , "+" ,num[2], "=",num[3])

      caso ("2")
         escreva ("Digite o 1º numero:")
         leia(num[1])
         escreva ("Digite o 2º numero:")
         leia(num[2])
         num[3] <- num[1]-num[2]
         escreval( num[1] , "-" ,num[2], "=",num[3])
        ...

 

 

Observe que está lentado os mesmo dados e dá mesma forma 4 vezes... Bastaria ler uma vez só. Exemplo:

      leia(menu)

      escreva ("Digite o 1º numero:")
      leia(num[1])
      escreva ("Digite o 2º numero:")
      leia(num[2])

      escolha menu
      caso ("1")
         num[3] <- num[1]+num[2]
         escreval(num[1], "+", num[2], "=", num[3])
      caso ("2")
         num[3] <- num[1]-num[2]
         escreval(num[1], "-", num[2], "=", num[3])

 

 

 

2# Utilização do vetor

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

Guarde os números digitados pelo usuário em um vetor de 3 posições na posição 1 armazene o primeiro número, na posição 2 armazene o segundo número e na posição 3 armazene o resultado da operação.

Me pareceu que ficou tudo certo!

 

 

 

3# Sobre a formatação das respostas

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

Apresente o resultado na tela, no formato: numero1 operação numero2 = resultado. Exemplo: 3 + 5 = 8 [...]

 

Segue um exemplo da formatação atual:

 

Adição:

image.png

 

Subtração:

image.png

 

Divisão:

image.png

 

Multiplicação:

image.png

 

Observe como os sinais das operações e o sinal de igual estão colados ao números da esquerda... bastaria alinhar. Exemplos:

 

Ou insere os espaços onde precisaria inserir:

      caso ("1")
         num[3] <- num[1]+num[2]
         escreval(num[1], " +" , num[2], " =", num[3])
      caso ("2")
         num[3] <- num[1]-num[2]
         escreval(num[1], " -" , num[2], " =", num[3])

 

image.png

 

Ou insere uma formação nos números e faz os ajustes:

      caso ("1")
         num[3] <- num[1]+num[2]
         escreval(num[1]:1, " + " , num[2]:1, " = ", num[3]:1)
      caso ("2")
         num[3] <- num[1]-num[2]
         escreval(num[1]:1, " - " , num[2]:1, " = ", num[3]:1)

 

image.png

 

Observe que os números normalmente insere um espaço a esquerda... o que não faz muito sentido... daí, poderia remover esses espaços com o :1 e depois ir inserindo espaços onde deseja. Nesse caso, veja como o 5 ficou encostado a esquerda... e que os espaçamentos entre os "símbolos" são controlados por espaços no próprio texto. Fica mais fácil de organizar. Entretanto, quando for para números reais precisará decidir se vai deixar casas decimais fixas (algo como :1:3) ou se vai deixar livre, deixaria o resultado sem a formatação. Exemplos:

 

Assim:

escreval(num[1]:1, " / ", num[2]:1, " = ", num[3]:1:3)

image.png

 

Ou assim:

         escreval(num[1]:1, " / ", num[2]:1, " =", num[3])

image.png

 

 

 

 

4# Proteção contra divisão por 0

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

Tome cuidado com a operação de divisão, não deixe o usuário digitar o denominador zero, pois não existe divisão por zero. Portanto, peça para ele digitar novamente, caso isso aconteça.

 

No teu código você está verificando novamente o valor do menu:

10 horas atrás, Alexsander Romandini disse:


         enquanto ( num[2] = 0 ) e ( menu = "3" ) faca
            escreval("Impossível dividir por Zero !")
            escreval("digite novamente o divisor " )
            leia (num[2])
         fimenquanto

 

 

Assim... errado, errado, não estaria, mas, como está dentro do "caso 3", essa verificação estaria redundante... daí, para o contexto, não seria necessário essa verificação. Poderia ficar assim:

 

      caso ("3")
         enquanto (num[2] = 0) faca
            escreval("Impossível dividir por Zero !")
            escreval("digite novamente o divisor " )
            leia(num[2])
         fimEnquanto

 

 

 

5# Menu com laço de repetição

Em 21/05/2021 às 08:25, Alexsander Romandini disse:

A calculadora deverá permanecer em um laço de repetição até o usuário digitar 5 (que é a opção de sair). 

 

Me parece tudo ok também. Aí só verificaria se ficaria melhor limpar a tela a cada loop ou não. Sem limpar parece que ficou bom, mas se quiser treinar, tente ajustar para limpar a tela após exibir o resulto e voltar para o menu.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!