Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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 .

Postado

@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
Postado

@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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!