Jump to content

Expoentes Décimais..


Paletas
 Share

Recommended Posts

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~

Link to comment
Share on other 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~

Link to comment
Share on other 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).  😁

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

  5 +------

    \| x^4

Cumpr. bk@ero    👍

Link to comment
Share on other 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,

Link to comment
Share on other 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

Link to comment
Share on other 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:

http://img360.imageshack.us/img360/4112/dem6px.png

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.