Ir ao conteúdo

Posts recomendados

Postado

Olá! Eu estou com um problema no cálculo das potências de 10. Eu estou usando a biblioteca math.h e a função pow(),

mas ao calcular 10 ao quadrado o resultado é 99 o mesmo acontece com 10 elevado a 4 que dá 9999. Eu estava usando o compilador

DEV C++ e pensei que o problema fosse do compilador então eu instalei o Code::Blocks e o mesmo erro continua. 

Alguém sabe me dizer porque isso está acontecendo? Obrigada.

Postado

Estou postando o código. Não estou conseguindo usar o botão "code" a tela abre mas fica travada, então postei assim mesmo.

 

 

//24.  São dados dois números inteiros positivos p e q, sendo que
//o número de dígitos de p é menor ou igual ao número de dígitos de q. Verificar se p é um subnúmero de q.
//Exemplos:
//p = 23, q = 57238, p é subnúmero de q.
//p = 23, q = 258347, p não é subnúmero de q.


#include<stdio.h>
#include<math.h>
int main(){
    int p,q,x,y,tot1=0,tot2=0,
        tot3,tot4,tot5,pot1,pot2,
        num1,num2,cont=0;
    printf("Digite p e q\n");
    scanf("%d %d",&p,&q);
    x=p;
    y=q;
    while(x>=1){
                 x=x/10;
                 tot1++;
                 }
                 tot3=tot1-1;
                 tot5=tot3;
    while(y>=1){
                 y=y/10;
                 tot2++;
                 }
                 tot4=tot2-1;
                 if(tot1>tot2){
                 printf("p nao pode ser maior que q digite outros numeros\n");
                 system("pause");
                 }
                 pot1=pow(10,tot3);   //calculo da potencia de p 
                 pot2=pow(10,tot4);   //calculo da potencia de q              
                 num1=p/pot1;
                 num2=q/pot2;
                 tot3--;
                 tot4--;                 
                 while(tot3>=0){
                                if(num1==num2){
                                cont++;
                                pot1=pow(10,tot3);
                                pot2=pow(10,tot4);
                                printf("pot2=%d\n",pot2);
                                num1=p/pot1;
                                num2=q/pot2;
                                tot3--;
                                tot4--;
                                }
                                else{
                                        //Não terminei ainda esta condição
                                        //parei porque os calculos estão dando errados
                                }
                                }
                                if(cont==tot5)
                                printf("O numero %d e subnumero de %d\n",p,q);
                                else
                                printf("O numero %d nao e subnumero de %d",p,q);
    system("pause");
    return 0;
}


 

Postado

Olá @Cristina2000

 

O procedimento pow(...) retorna tipo real [Float ou Double] no caso, é double.  Daí o ideal é que a variável que receberá o retorno seja também do tipo double com isso evita truncagem, é muita mais consistente e legal.

 

Online GDB: math :: pow 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!