• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Paletas

Expoentes Décimais..

14 mensagens neste tópico

Bem um amigo meu estava a programar uma calculadora com fórmulas de um jogo e deparou-se com um caso complicado!

Ele precisava de elevar uma variável a 0,8 , ora com um ciclo For parece-me completamente impossivel, ja tentei alterar a formula de maneira matematica e nada..

Se alguem tiver uma sugestão, ja me matei a pensar nisso e nada! :wallbash:

Obrigado,

Paletas~

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já não me lembro como se calculam raízes no Pascal.

Se a variável a que te referes for x, então x^0,8 = x^(8/10) = x^(4/5) = raiz quinta de x^4

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já não me lembro como se calculam raízes no Pascal.

Se a variável a que te referes for x, então x^0,8 = x^(8/10) = x^(4/5) = raiz quinta de x^4

Não apanhei a parte do "raiz quinta de x^4"

Mas obrigado! Até o meu professor de bases de programação ficou a olhar quando lhe fiz a pergunta  :dontgetit:...

Obrigado,

Paletas~

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já não me lembro como se calculam raízes no Pascal.

Se a variável a que te referes for x, então x^0,8 = x^(8/10) = x^(4/5) = raiz quinta de x^4

Tens a certeza que a função '^' existe em Pascal ? é que a mim dá-me erro :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já não me lembro como se calculam raízes no Pascal.

Se a variável a que te referes for x, então x^0,8 = x^(8/10) = x^(4/5) = raiz quinta de x^4

Não apanhei a parte do "raiz quinta de x^4"

Mas obrigado! Até o meu professor de bases de programação ficou a olhar quando lhe fiz a pergunta  :dontgetit:...

Obrigado,

Paletas~

Bem, apetece-me dizer uma piada:

Então, a raiz quinta é a seguir à raiz quarta, que depois é a raiz sexta, sábado, domingo e depois volta para a raiz segunda ou raiz de segunda (raiz de baixa categoria).  :cheesygrin:

Agora a sério, ele quis dizer foi raiz de índice 5 de (x^4):

  5 +------

    \| x^4

Cumpr. bk@ero    :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Paletas~ se nao percebeste o desenho do bk@ero que tava mt fixe :thumbsup: é o mesmo que raiz cúbica (com um 3 na raiz), mas desta vez com um 5 , ou seja raiz "quinta" de x^4 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora a sério, ele quis dizer foi raiz de índice 5 de (x^4):

  5 +------

    \| x^4

É isso, obrigado, como já não uso Pascal há anos não sei dizer como fazer isto em Pascal...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelo desenho  :thumbsup:

Agora vou ver de descubro como fazer isso em pascal!

Obrigado,

Paletas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazeres a potencia podes utilizar uma função

function potencia (num,elev:integer) : integer;
var poten,i:integer;
begin
      poten:=1;
      for i:=1 to elev do 
           poten:=poten*num;
      potencia:=poten;
end;

Agora para fazeres essa raiz marada é que não sei. Só sei fazer a raiz normal utilizando a função sqrt.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

______________________________________________

function raiz(indice : real; base : integer):real;

begin

  raiz := exp((1/indice)*ln(base));

end;

______________________________________________

Que tal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MAiDEN_DuDE - Se fosse assim tão fácil eu ja tinha feito  :cheesygrin:, o prob e que o For não dá com variáveis do tipo Real! Mas obrigado!

José Oliveira - Acho que isso deve funcionar, depois da escola vou fazer os devidos testes! Obrigado +1 vez!

Obrigado,

Paletas~

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Program  sss;
Uses crt;
Var indice : real;
    base : integer;
function raiz (indice : real; base : integer):real;
begin
         raiz := exp ((1/indice)*ln(base));
end;
Begin
  writeln ('indice');
  readln (indice);
  writeln('base');
  readln(base);
  writeln (raiz(indice,base));
  readln;
End.

Dá-me erro "Error 200 : Division by Zero" Ou seja, compila sem problemas, e quando vai a  começar diz logo isso! Vou meter os neurónios a funcionar e ver o que se passa... ou tentar!

EDIT - Bem, em vez de usar o Turbo Pascal tentei corre-lo no Dev-Pascal, e funcionou! Agora vo mandar ao tal amigo e ver se dá os resultados que ele quer...

EDIT2 - Segundo ele, os resultados não são os esperados, mas já to aqui a pensar numas alterações que devem funcionar!

Obrigado,

Paletas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"Division by zero" quer dizer "Divisão por zero" que como sabes, ou devias saber é impossível (experimenta fazer qualquer coisa a dividir por zero numa calculadora e vê o que dá...).

A conta está mal. Devia ser exp(indice*ln(base)).

Base teórica:

dem6px.png

ups, ficou um bocado grande :hmm: paciencia, é p'ra se ver bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora