Ir ao conteúdo

Erro estranho na resposta?


Ir à solução Resolvido por Arm Outro,

Posts recomendados

Postado

A questao é:

1.Ler um número maior que zero e imprimir o quadrado de todos os números entre 0 e o número lido.

 

porém ao executar da erro em algumas operações. Como 10x10=99. 11x11= 120. Alguem sabe dizer porque esta acontecendo isso? Obg

 

Segue o codigo:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main()
 
{
    int n, cont, potencia;
 
    printf("Escreva um numero inteiro para mostrar o quadrado entre 0 e este numero: ");
    scanf ("%d", &num1);
 
    for (cont=0; cont<=n; cont++){
    potencia=pow(cont,2);
    printf("%d*%d = %d\n", cont, cont, potencia);
    }
 
    return 0;
}
 
  • Solução
Postado

O que acontece é que a função pow() retorna um double, e como você está atribuindo para um int, acontece perda de dados.

Como funções que retornam double/float não são precisas, elas retornam valores como 10.0002, 2.999998. o tipo int só vai pegar a parte inteira.

 

Então você pode usar a função round, que arredonda para o valor mais próximo de um inteiro.

round(10.9999) = 11.0

round(2.0003) = 2.0

 

Só usar então: potencia=round( pow(cont,2) );

Visitante
Este tópico está impedido de receber novas respostas.

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