• 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

8 posts neste tópico

#1   Postado (editado)

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 <>
1 pessoa curtiu isso

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.

 

 

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

#3   Postado (editado)

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 <>
1 pessoa curtiu isso

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.

1 pessoa curtiu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

#5   Postado (editado)

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

#7   Postado (editado)

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

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