Pular para o conteúdo

RE: linguagem C

Responder tópico
  • Denunciar
  • Indicar

1. RE: linguagem C

Enviado em 13/11/2018 - 22:01h

E ae galera por favor to precisando de uma ajuda muito importante se alguém puder me socorrer agradeço pra resolver essa questão em linguagem C...:

Fazer uma função que cacula a enésima potência de uma variável real x:
f(x, n) = x^n
Não pode ser utilizada a biblioteca math.h. O cálculo deve ser realizado utilizando-se um laço for dentro da função.
Esta função deverá retornar o resulto em seu retorno.

Ou seja o programa principal deverá chamar a função como segue:

float ret;
ret = calc_pot(3, 5); // 3^5

Responder tópico

3. Re: RE: linguagem C

Enviado em 14/11/2018 - 03:02h

#include <stdint.h>

// Uma forma de usar representação de NaN (not a number) sem usar <math.h>
static const union {
uint64_t i;
double d;
} u_nan={.i=0x7fffffffffffffffLL};

double int_pow(double base, int exponent){
if(base==0.0)
return exponent? 0.0: u_nan.d;
if(exponent<0){
base=1.0/base;
exponent=-exponent;
}
double result=(exponent & 1? base: 1.0);
while((unsigned)exponent>1){
exponent=((unsigned)exponent)>>1;
base*=base;
if(exponent & 1)
result*=base;
}
return result;
}

4. Re: RE: linguagem C

Enviado em 14/11/2018 - 17:24h

paulo1205 escreveu:

#include <stdint.h>

// Uma forma de usar representação de NaN (not a number) sem usar <math.h>
static const union {
uint64_t i;
double d;
} u_nan={.i=0x7fffffffffffffffLL};

double int_pow(double base, int exponent){
if(base==0.0)
return exponent? 0.0: u_nan.d;
if(exponent<0){
base=1.0/base;
exponent=-exponent;
}
double result=(exponent & 1? base: 1.0);
while((unsigned)exponent>1){
exponent=((unsigned)exponent)>>1;
base*=base;
if(exponent & 1)
result*=base;
}
return result;
}
Ola paulo, eu ainda sou um pouco leigo no assunto, mas o que eu precisaria fazer para poder compilar esse programa no gdb online pois não consegui, obrigado...

5. Re: RE: linguagem C

Enviado em 14/11/2018 - 22:41h

Não conheço gdb on-line. Que mensagem de erro lhe dá?

Por que você não compila na sua máquina?

6. Paulo

Enviado em 19/11/2018 - 14:03h

Ola Paulo, esse é o erra na hora de compilar o programa que aparece!
se puder me ajudar... como eu disse não entendo muito do assunto mas preciso resolver isso... não sei se tem haver com o sistema operacional da maquina que uso que é windows, então como n tem como postar o print copiei abaixo o erro apresentado no compilador... obrigado.



/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

7. Re: RE: linguagem C

Enviado em 19/11/2018 - 15:32h

Prezado,

Ali não está o programa completo, mas apenas uma função que calcula um potência com expoente inteiro. O resto do programa, incluindo a função main(), é por sua conta (aliás, até a função de exponenciação também deveria ter sido feita por você).

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder