RE: linguagem C

1. RE: linguagem C

João Vítor Brock Alvienes
jvba

(usa Outra)

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


  


2. Re: RE: linguagem C

Uilian Ries
uilianries

(usa Linux Mint)

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

você vai precisa criar um laço for onde o resultado da multiplicação e armazenado e atualizado a cada iteração ...

Tem alguns posts dentro do VOL onde o pessoal comenta sobre como funciona o laço for

Tem também esse post q explica mais: https://www.cprogressivo.net/2013/02/O-que-e-para-que-serve-e-como-usar-o-laco-FOR-em-C.html

boa sorte.




3. Re: RE: linguagem C

Paulo
paulo1205

(usa Ubuntu)

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

João Vítor Brock Alvienes
jvba

(usa Outra)

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

Paulo
paulo1205

(usa Ubuntu)

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

João Vítor Brock Alvienes
jvba

(usa Outra)

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

Paulo
paulo1205

(usa Ubuntu)

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ê).






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts