Ir ao conteúdo
  • Cadastre-se

C Como utilizar a função pow do C?


Posts recomendados

O programa não esta completo ainda, mas deveria pelo menos rodar a função1. Está ocorrendo o seguinte erro:

> /tmp/ccbRtCar.o: na função `funcao1':

> iniciosimulado02.c:(.text+0x18f): referência indefinida para `pow'

> collect2: error: ld returned 1 exit status

 

Não consegui compreender muito bem o erro e,consequentemente não achei o local do erro.

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main() {
    int x = 1;
    imprimemenu();
    questao03(x);
    return (0);
}

int imprimemenu() {
    printf("\n(1)  funcao  1\n");
    printf("\n(2)  funcao  2\n");
    printf("\n(3)  funcao  3\n");
    printf("\n(0)  sair \n");
    return (0);
}

int questao03(int x) {
    int y;
    int z, a;
    while (x != 3) {
        printf("Escolha a opcao do menu: \n");
        scanf("%i", &x);
        switch (x) {
            case 1:
                printf("Digite o numeros do qual será extraída a raiz: \n");
                scanf("%i", &y);
                printf("Digite a ordem da raiz: \n");
                scanf("%i", &z);
                funcao1(y, z);
                printf("O resultado da conta deu: %i \n", a);
                break;
            case 2:
                printf("essa funcao nao retorna \n");
                break;
            case 3:
                printf("essa funcao nao retorna \n");
                break;
            default:
                printf("valores entre 0 e 3\n");
        }
    }
}

int funcao1(int y, int z) {
    int k;
    k = pow(y, 1 / z);
    return (k);
}

 

adicionado 44 minutos depois

estava compilando errado , nesse programa é necessário a biblioteca math logo quando for compilar tem que compilar com o -lm no final.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Lucas_Gonçalves    seu código está funcionando bem, apesar de que o resultado esteja errado, mas o programa não deu nenhum erro,   só não entendi o que você quis dizer com ordem da raiz ,  e por que você colocou para dividir o expoente de 1 , creio que assim não esteja certo não .

Link para o comentário
Compartilhar em outros sites

@devair1010  ordem da raiz corresponde ao índice da raiz(2=quadrado,3=cubo...),coloquei 1 dividido por Z que é o índice da raiz,o certo seria 1.0 dividido por Z...pow(Y,1.0/Z) é a mesma coisa que Y^1.0/Z, para Y=9 e Z=2 o resultado é 3,ou seja 9^1.0/2 = raiz quadrada de 9...agora para Z=3 iria calcular a raiz cúbica de 9.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Lucas_Gonçalves     entendi, então vi que estava calculando certo mas na hora de imprimir estava imprimindo o valor errado pois a variável  a     continha um valor ignorado, então coloque essa variável como retorno da funcao1  e  o while da questao03  estava com valor 3 mas o certo seria zero,   então com essas modificações seu código ficou assim :

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main() {
    int x = 1;
    imprimemenu();
    questao03(x);
    return (0);
}

int imprimemenu() {
    printf("\n(1)  funcao  1\n");
    printf("\n(2)  funcao  2\n");
    printf("\n(3)  funcao  3\n");
    printf("\n(0)  sair \n");
    return (0);
}

int questao03(int x) {
    int y;
    int z, a;
    while (x != 0) {
        printf("Escolha a opcao do menu: \n");
        scanf("%i", &x);
        switch (x) {
            case 1:
                printf("Digite o numeros do qual será extraída a raiz: \n");
                scanf("%i", &y);
                printf("Digite a ordem da raiz: se eh quadrada(2) ou cubica(3) \n");
                scanf("%i", &z);
                a=funcao1(y, z);
                printf("O resultado da conta deu: %i \n", a);
                break;
            case 2:
                printf("essa funcao nao retorna \n");
                break;
            case 3:
                printf("essa funcao nao retorna \n");
                break;
            default:
                printf("valores entre 0 e 3\n");
        }
    }
}

int funcao1(int y, int z) {
    int k;
    k = pow(y, 1.0 / z);
    return (k);
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!