Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
mateus costa r

Visualg- erro no algoritmo calculadora

Recommended Posts

Olá, estou praticando um pouco a linguagem no visualg, nos meus tempos livres eu fico estudando, porém quando eu estava fazendo o algoritmo esta dando erro e não consigo sair dali já tem 2 dias...vou mostra o algoritmo o problema ta no "Bhaskara" não consigo dividir , problema é esse "escreval ("resposta da Primeira opção:", -B + j:1:0(/2*A) )"......... simplesmente não vai

Algoritmo "calculadora"
// objeitvo: para estudos
// criador: mateus Costa
// 10/07/2017
Var
num_1, num_2, num, desconto, juros, A, B, C, j, i, op : real
operacao, resp, opcao, x, enter: caracter
Inicio
repita
limpatela
escreval ("calculadora")
escreval ("Digite o tipo da operação exemplo: (-),(+),(x),(/),(%) (!)")
escreval ("mais exemplo: (bhaskara)")
leia(operacao)
escolha (operacao)
caso "bhaskara"
     escreval ("formula: (b)2 - 4.a.c")
     escreval ("digite a letra A:")
     leia(A)
     escreval ("digite a letra B:")
     leia(B)
     escreval ("digite a letra c:")
     leia(C)
     escreval ("....")
     escreval ("Reposta:",B*B - 4*A*c)
     escreval("....")
     escreval("Aperter Enter para continuar")
     leia(enter)
     escreval ("Segunda formula:– b ± delta")
     escreval ("              X=  -----------")
     escreval ("                    2.A")
 j <- 0
 i <- 0
 enquanto (j * i <= B*B - 4*A*c ) faca
          escreva (j, " ")
          j <- j + 0.1
          i <- i + 0.1
 fimenquanto
     escreval ("resposta fatorial do delta:", j  )
     escreval ("resposta fatorial do delta:", i  )
     escreval ("   ",-B + j:1:0 )
     escreval("x=--")
     escreval ("  ",2*A)
     escreval ("resposta da Primeira opção:", -B + j:1:0(/2*A) )
     
     
       
caso "!"
     escreval("digite o número desejado para a raiz quadrada:")
     leia(num)
     escreval("resultado é:", num * num)
caso "+"
     escreval ("digite o primeiro numero")
     leia(num_1)
     escreval ("digite o segundo numero")
     leia(num_2)
     escreval ("Resultado:",num_1 + num_2)
caso "-"
     escreval ("digite o primeiro numero")
     leia(num_1)
     escreval ("digite o segundo numero")
     leia(num_2)
     escreval ("Resultado:",num_1 - num_2)
caso "x"
     escreval ("digite o primeiro numero")
     leia(num_1)
     escreval ("digite o segundo numero")
     leia(num_2)
     escreval ("Resultado:",num_1 * num_2)
caso "/"
     escreval ("digite o primeiro numero")
     leia(num_1)
     escreval ("digite o segundo numero")
     leia(num_2)
     escreval ("Resultado:",num_1 / num_2)
caso "%"
     escreval ("digite UM numero:")
     leia (num)
     escreval ("escolha opção 1, para:desconto")
     escreval ("escolha opção 2, para:juros")
     leia(opcao)
     escolha (opcao)
     caso "1"
     escreval ("digite o desconto:")
     leia(desconto)
     escreval ("resultado é:", num - num * (desconto) / 100)
     escreval ("desconto:", num * (desconto) / 100)
     caso "2"
     escreval ("digite o juros:")
     leia(juros)
     escreval ("resultado é:", num + num *(juros) / 100)
     escreval ("Juros:", num * (juros) / 100)
fimescolha
fimescolha
fimescolha
Escreval ("voce deseja continuar sim ou não:?")
leia(resp)
ate(resp <> "sim")
limpatela
Fimalgoritmo

 

Editado por DiF
Botão CODE <>
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @mateus costa r.

 

3 horas atrás, mateus costa r disse:

o problema ta no "Bhaskara" não consigo dividir , problema é esse "escreval ("resposta da Primeira opção:", -B + j:1:0(/2*A) )"......... simplesmente não vai

 

Creio que a sintaxe esteja incorreta.

 

1) Creio que não seja possível usar essa "formatação" usando ":1:0" durante a conta, ou seja, a formatação vem depois do resultado.

2) Após você está fazendo "(/2*A)", creio que também não seja válido, pois o numerador não está sendo informado... seria algo como "abre parênteses dividido por 2*A".

 

Para tentar ajudar, creio que a conta seria algo assim:

(-B+j)/(2*A)

"menos b mais raiz de delta, sobre dois a"

 

obs.: lembrando que várias possibilidades de respostas: nenhuma raiz, única raiz ou duas raízes reais (depende do valor do Delta)

 

Tem alguns outros detalhes que precisariam ser revisto no código, como:

 

3 horas atrás, mateus costa r disse:

     escreval ("formula: (b)2 - 4.a.c")

Seria "formula" do que? Veja, a 'fórmula de Bhaskara' não é essa, isso seria apenas uma parte: o valor do Delta.

 

Por ai vai.

 

No aguardo.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Em 10/07/2017 às 16:50, Simon Viegas disse:

    Olá @mateus costa r.

     

     

    Creio que a sintaxe esteja incorreta.

     

    1) Creio que não seja possível usar essa "formatação" usando ":1:0" durante a conta, ou seja, a formatação vem depois do resultado.

    2) Após você está fazendo "(/2*A)", creio que também não seja válido, pois o numerador não está sendo informado... seria algo como "abre parênteses dividido por 2*A".

     

    Para tentar ajudar, creio que a conta seria algo assim:

    
    (-B+j)/(2*A)

    "menos b mais raiz de delta, sobre dois a"

     

    obs.: lembrando que várias possibilidades de respostas: nenhuma raiz, única raiz ou duas raízes reais (depende do valor do Delta)

     

    Tem alguns outros detalhes que precisariam ser revisto no código, como:

     

    Seria "formula" do que? Veja, a 'fórmula de Bhaskara' não é essa, isso seria apenas uma parte: o valor do Delta.

     

    Por ai vai.

     

    No aguardo.

     

     

    olá amigo, obg por ter respondido.

    primeiro: a parte da "formula" seria só para lembrar ... tanto a mim e ao usuário. Só um detalhe :)

    irei explicar o problema com maiores detalhes agora... eu estou fazendo a equação do 2 grau inteira, consegui fazer ela funcionar só que , quando chegar na parte de dividir (é onde estar o problema) ele não dividi... porque? eu fiz isso:

    j <- 0
     i <- 0
     enquanto (j * i <= B*B - 4*A*c ) faca
              escreva (j, " ")
              j <- j + 0.1
              i <- i + 0.1

    quando o delta aparece por exemplo 196 que é 14 x 14. porém, eu não sabia como fazer para acha esse 14 x 14 entende? para chegar nessa parte >     

       

     escreval ("Segunda formula:– b ± delta")
         escreval ("                         X=  -----------")
         escreval ("                                    2.A")

    como você pode ver, essa parte você precisa saber qual e o numero que dar a raiz, essa foi a maneira que eu consegui usando o "enquanto", ate chegar no numero que dar na raiz multiplicando 0,1 + 0,1 ate chegar no resultado.... porém quando chega ele dar numero quebrado, com virgula e o resultado final fica diferente, então eu usei o "1:0" para aproximar, e isso funcionou e faltava só dividir... ai que veio minha tristeza ele dar o erro... não consigo solucionar isso. espero que tenha entendido :/ qualquer coisa envio print dos erros e dos algoritmos.

    Editado por DiF
    Botão CODE <>
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Em 14/07/2017 às 19:02, mateus costa r disse:

    e faltava só dividir... ai que veio minha tristeza ele dar o erro... não consigo solucionar isso. espero que tenha entendido :/ qualquer coisa envio print dos erros e dos algoritmos.

    Já expliquei..

     

    Em 14/07/2017 às 19:02, mateus costa r disse:

    Para tentar ajudar, creio que a conta seria algo assim:

    
    (-B+j)/(2*A)

     

     

     

    Quem é j nessa fórmula?  (é a raiz de Delta)

     

    x'=(-B+j)/(2*A)

    x''=(-B-j)/(2*A)

     

    Ou seja, "-b, mais ou menos a raiz de Delta, tudo isso sobre 2a"

     

    No aguardo.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 22 horas atrás, Simon Viegas disse:

    Já expliquei..

     

     

     

     

    Quem é j nessa fórmula?  (é a raiz de Delta)

     

    x'=(-B+j)/(2*A)

    x''=(-B-j)/(2*A)

     

    Ou seja, "-b, mais ou menos a raiz de Delta, tudo isso sobre 2a"

     

    No aguardo.

    acho que entenderá melhor com imagens o "J" e  "I" foi a maneira que encontrei de acha o numero da raiz tipo raiz de 25 e 5, porque ? 5x5  = 25 entendeu , J x I = 25 ...

    parte1.png

    parte 2.png

    opa, o final da imagem o resultado se repeti 2 vezes... (foi mal) acabei repetindo o 

    (-B+j)/(2*A) ...rs.

    Editado por mateus costa r
    erro ortográfico. tinha uma letra a mais... e , erro na imagem

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @mateus costa r.

     

    1) VARIÁVEIS J E I

    14 horas atrás, mateus costa r disse:

    acho que entenderá melhor com imagens o "J" e  "I" foi a maneira que encontrei de acha o numero da raiz tipo raiz de 25 e 5, porque ? 5x5  = 25 entendeu , J x I = 25 ...

     

    Eu já tinha entendido... :) veja:

     

    Em 15/07/2017 às 19:31, Simon Viegas disse:

    Quem é j nessa fórmula?  (é a raiz de Delta)

     

    Eu fiz uma pergunta retórica! A resposta coloquei entre parênteses.

     

     

    E complemento:

     

    Em 15/07/2017 às 19:31, Simon Viegas disse:

    x'=(-B+j)/(2*A)

    x''=(-B-j)/(2*A)

     

    Ou seja, "-b, mais ou menos a raiz de Delta, tudo isso sobre 2a"

     

    "-b" = -B

    "mais ou menos a raiz de Delta" = +j   e  -j   respectivamente

    "tudo isso sobre 2a" = /(2*A)

     

     

     

    2) DENOMINAÇÃO

    No código você fala em "resposta fatorial do delta", mas j não é o fatorial de Delta, mas sim a raiz de Delta. Fatorial é outra coisa, vide aqui.

     

     

     

    3) OUTRAS VERIFICAÇÕES

    Em relação a outras verificações, eu precisaria do código para poder fazer alguns testes... mas por exemplo,  lá na linha 43 o resultado está dando errado porque você está arrendando sem nenhuma casa decimal. "-B+J" dá 2,1, e não 2.

     

     

    ***

     

    Por ai vai...

     

     

    Por favor, poste o texto do código para que possamos analisar melhor.

     

    No aguardo.

     

     

     

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 5 horas atrás, Simon Viegas disse:

    Olá @mateus costa r.

     

    1) VARIÁVEIS J E I

     

    Eu já tinha entendido... :) veja:

     

     

    Eu fiz uma pergunta retórica! A resposta coloquei entre parênteses.

     

     

    E complemento:

     

     

    "-b" = -B

    "mais ou menos a raiz de Delta" = +j   e  -j   respectivamente

    "tudo isso sobre 2a" = /(2*A)

     

     

     

    2) DENOMINAÇÃO

    No código você fala em "resposta fatorial do delta", mas j não é o fatorial de Delta, mas sim a raiz de Delta. Fatorial é outra coisa, vide aqui.

     

     

     

    3) OUTRAS VERIFICAÇÕES

    Em relação a outras verificações, eu precisaria do código para poder fazer alguns testes... mas por exemplo,  lá na linha 43 o resultado está dando errado porque você está arrendando sem nenhuma casa decimal. "-B+J" dá 2,1, e não 2.

     

     

    ***

     

    Por ai vai...

     

     

    Por favor, poste o texto do código para que possamos analisar melhor.

     

    No aguardo.

     

     

     

     

    olá, irei colocar a raiz do delta... um pequeno erro de matemática :/ . 

    Eu estou usando esse site para a formula de bhaskara> http://brasilescola.uol.com.br/matematica/formula-bhaskara.htm  < o exemplo que to usando ta nele.

    aqui ta o código :

    Algoritmo "calculadora"
    // objeitvo: para estudos
    // criador: mateus Costa
    // 10/07/2017
    Var
    num_1, num_2, num, desconto, juros, A, B, C, j, i, op: real
    operacao, resp, opcao, enter, x: caracter
    Inicio
    repita
    limpatela
    escreval ("____________________________________________________________")
    escreval ("calculadora")
    escreval ("Digite o tipo da operação exemplo: (-),(+),(x),(/),(%) (!)")
    escreval ("(bhaskara)")
    escreval ("____________________________________________________________")
    leia(operacao)
    escolha (operacao)
    caso "bhaskara"
         escreval ("formula: (b)2 - 4.a.c")
         escreval ("digite a letra A:")
         leia(A)
         escreval ("digite a letra B:")
         leia(B)
         escreval ("digite a letra c:")
         leia(C)
         escreval ("..............................")
         escreval ("Reposta:",B*B - 4*A*c)
         escreval("...............................")
         escreval("Aperter Enter para continuar")
         leia(enter)
         escreval ("Segunda formula:– b ± delta")
         escreval ("              X=  -----------")
         escreval ("                    2.A")
     j <- 0
     i <- 0
     enquanto (j * i <= B*B - 4*A*c ) faca
              escreva (j, " ")
              j <- j + 0.1
              i <- i + 0.1
    fimenquanto
         escreval ("resposta fatorial do delta:", j  )
         escreval ("resposta fatorial do delta:", i  )
         escreval ("   ",-B + j:1:0 )
         escreval("x=----")
         escreval ("  ",2*A)
         escreval ("resposta da Primeira opção de X:",(-B+j)/(2*A):1:0 )
         escreval ("resposta da segunda opção X:",(-B-j)/(2*A):1:0 )
         escreval ("--------------------------")
         escreval ("Portanto, as raízes da equação:")
         escreval ((A),"+",(B),"x",(C),"=","0"," são ",(-B+j)/(2*A):1:0," e ",(-B-j)/(2*A):1:0)
         escreval ("--------------------------")
    
    caso "!"
         escreval("digite o número desejado para a raiz quadrada:")
         leia(num)
         escreval("resultado é:", num * num)
    caso "+"
         escreval ("digite o primeiro numero")
         leia(num_1)
         escreval ("digite o segundo numero")
         leia(num_2)
         escreval ("Resultado:",num_1 + num_2)
    caso "-"
         escreval ("digite o primeiro numero")
         leia(num_1)
         escreval ("digite o segundo numero")
         leia(num_2)
         escreval ("Resultado:",num_1 - num_2)
    caso "x"
         escreval ("digite o primeiro numero")
         leia(num_1)
         escreval ("digite o segundo numero")
         leia(num_2)
         escreval ("Resultado:",num_1 * num_2)
    caso "/"
         escreval ("digite o primeiro numero")
         leia(num_1)
         escreval ("digite o segundo numero")
         leia(num_2)
         escreval ("Resultado:",num_1 / num_2)
    caso "%"
         escreval ("digite UM numero:")
         leia (num)
         escreval ("escolha opção 1, para:desconto")
         escreval ("escolha opção 2, para:juros")
         leia(opcao)
         escolha (opcao)
         caso "1"
         escreval ("digite o desconto:")
         leia(desconto)
         escreval ("resultado é:", num - num * (desconto) / 100)
         escreval ("desconto:", num * (desconto) / 100)
         caso "2"
         escreval ("digite o juros:")
         leia(juros)
         escreval ("resultado é:", num + num *(juros) / 100)
         escreval ("Juros:", num * (juros) / 100)
    
    fimescolha
    fimescolha
    fimescolha
    Escreval ("voce deseja continuar sim ou não:?")
    leia(resp)
    ate(resp <> "sim") e (resp <> "s")
    limpatela
    Fimalgoritmo

     

    Editado por Simon Viegas
    Antes de colar um códgio, favor usar a tag CODE. Pressionar "BOTÃO <>" na barra de ferramentas

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @mateus costa r.

     

    Minhas sugestões:

     

    1) CÁLCULO DE RAÍZES

    Tomando como base seu código:

    4 horas atrás, mateus costa r disse:
    
     j <- 0
     i <- 0
     enquanto (j * i <= B*B - 4*A*c ) faca
              escreva (j, " ")
              j <- j + 0.1
              i <- i + 0.1

     

     

    Obs.: os itens 1.1 e 1.2 eu já deixarei exemplos de como podem ficar (meio que "já dando a resposta")...

     

    1.1) Recálculos desnecessários

    Em vez de usar "B*B - 4*A*C" no enquanto, use uma variável para armazenar o resultado. Do jeito que está, a cada loop do enquanto a conta estará sendo refeita... ou seja, um trabalho extra pro processador. Ficaria algo assim:

     j <- 0
     i <- 0
     Delta<- b*b-4*a*c
     enquanto (j*i <= Delta) faca
        escreva (j, " ")
        j <- j+0.1
        i <- i+0.1

     

    1.2) Duplicação de variável

    Percebem-se que as variáveis j e i serão sempre idênticas, ou seja, basta usar apenas uma delas...  ficando algo como:

     j <- 0
     Delta <- b*b-4*a*c
     enquanto (j*j <= Delta) faca
        escreva (j," ")
        j <- j+0.1

     

    Outra coisa... a própria definição sugere que deveria ser uma variável só:

    Citação

    Na matemática, a raiz quadrada de um número x é um número único e não negativo que, quando multiplicado por si próprio, se iguala a x.[1]

     

    Fonte: Wikipédia

     

     

    1.3) Quanto a eficácia da operação

    Nesse seu código você está utilizando uma técnica com laço de repetição para calcular a raiz quadrada de um número... mas a conta não  está batendo, veja:

     

    Ao usar a=1, b=12 e c=-13, Delta daria 196, correto? Quanto dá a raiz de Delta, ou seja, a raiz de 196?

     

    Pela calculadora deu 14, mas no seu código está dando 14.1. Precisa corrigir isso.

     

     

     

     

    2) ARREDONDAMENTO DE RESULTADO
     

    Em 14/07/2017 às 19:02, mateus costa r disse:

    porém quando chega ele dar numero quebrado, com virgula e o resultado final fica diferente, então eu usei o "1:0" para aproximar, e isso funcionou e faltava só dividir...

     

    Então, na verdade não necessariamente funcionou, apenas meio que fez dar uma reposta equivalente ao que você desejava. São coisas diferentes. Veja, o resultado do cálculo via Bhaskara inclui a parte fracionada também (quando ocorre)! O número teria que ser exato (ou com um arredondamento menor). O problema está lá no item 1.3), ou seja, está fazendo o cálculo da raiz de Delta errado, daí consequentemente as raízes da equação também vão dar erradas.

     

    Por sinal, em vez de ":1:0", sugeriria algo como "1:3" ou mais, ou simplesmente não arredondar. Não precisa.

     

    RESUMINDO: ao usar 1, 12 e -13, o programa deveria retornar x1=1 e x2=-13, sem precisar arredondar (o resultado já é redondo).

     

     

     

    3) ETAPAS PARA CALCULAR VIA BHASKARA

     

    4 horas atrás, mateus costa r disse:

    Eu estou usando esse site para a formula de bhaskara> http://brasilescola.uol.com.br/matematica/formula-bhaskara.htm  < o exemplo que to usando ta nele.

    aqui ta o código :

     

    Pelo link que você postou, são 3 etapas:

    Etapa 1: Calcular discriminante
    Etapa 2: Substitua discriminante e coeficientes na fórmula de Bhaskara
    Etapa 3: Calcule as raízes da equação

    Está faltando a primeira! Ou seja, é necessário "discriminar" a categoria da equação do segundo grau de acordo com o valor de Delta: se é maior que 0, igual a 0 ou maior que 0. Cada categoria tem um tipo de resposta diferente.

     

    RESUMINDO: a modo de calcular muda de acordo com o valor de Delta.

     

     

    ***

     

    No aguardo.

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×