1
resposta

Dúvida - Problema com o resultado

Gostaria de saber o que há de errado com o código. Ao compilar e rodar, os valores de pow(maior_numero,6) e pow(menor_numero,3) ficam iguais a zero.

/* Crie um programa que solicite vários números inteiros ao usuário. Ao ler um número negativo o programa deve encerrar e exibir o valor do maior número elevado a seis e o valor do menor número elevado a três. */

#include "stdio.h"

#include "math.h"

int main(void) {

int numero_inteiro, maior_numero = 0, menor_numero = 2147483647;

while(1)    {

    printf("Digite um numero inteiro: ");
        scanf("%d",&numero_inteiro);

    if(numero_inteiro < 0)    {
        break;
    }
    if(numero_inteiro >= maior_numero)    {
        maior_numero = numero_inteiro;            
    }
    if(numero_inteiro <= menor_numero)    {
        menor_numero = numero_inteiro;            
    }            
}

printf("\nO valor do maior numero elevado a seis eh %d",pow(maior_numero,6));
printf("\nO valor do menor numero elevado a tres eh %d",pow(menor_numero,3));

}

1 resposta

use:

printf("\nO valor do maior numero elevado a seis eh %f",pow(maior_numero,6));
printf("\nO valor do menor numero elevado a tres eh %f",pow(menor_numero,3));

Você tá usando %d, que é para o tipo int para imprimir o retorno da função pow, que é do tipo double. Por isso você deveria usar o %f ou fazer uma conversão de tipo. O %f é a solução mais simples.