Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wosh1ngton

[Resolvido] Verificação do Quadrado Perfeito

Recommended Posts

Pessoal, fiz um programa aqui que calcula se um numero é ou não quadrado perfeito

ou seja faz a verificação se a raiz quadrada de um numero qualquer possui ou não resto

caso possua resto não é quadrado perfeito

mas to com um problema aqui com tipos de variaveis

o operador % que é o que calcula o resto só funciona com tipo INT ao que parece

e o tipo INT não suporta a função que calcula raiz quadrada SQRT.

tentei fazer a conversao do tipo float em INT mas não obtive sucesso no meu programa

gostaria da ajuda de vcs, mais uma vez.

grato!

 

CODE
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.c>

 

main()

 

{

float num, x;

int y;

 

printf("Insira um numero inteiro positivo:\n");

scanf("%f",&num);

x=sqrt(num);

x = (float)y;

 

printf("%.f", x);

if (x%2==0) {

printf("E um quadrado perfeito.\n");

}

else {

printf("nao e quadrado perfeito");

}

system("PAUSE");

return EXIT_SUCCESS;

getch();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ñ entendi isso:

x=sqrt(num);	
x = (float)y;
você atribiu um valor a x depois você atribui outro em seguida, sendo q 'y' provavelmente vai vir com sujeira pq naum foi nicializado!

 

e pra q isso:

system("PAUSE");	
return EXIT_SUCCESS;
getch();
q eu saiba qnd ele da o EXIT_SUCCESS ele naum vai + dar continuidade no programa entaum naum precisa do getch();

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh sim, saquei bom saber.

mas ainda to com problema que eu havia citado

incompatibilidade de tipos.

num ta executando o Se, pq o operador de resto %, só funciona com INT

e o SQRT nao funciona com INT, já tentei fazer conversao de Float pra Int mas não obtive sucesso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a função fmod.

É assim:

 

if (fmod(x, 2.0)==0.0)

 

blablabla

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara valeu, deu certim a função fmod daí

consegui resolver o algoritmo

eu tava pensando em dividir por 2 e verificar se resto era igual a 0

mas dessa forma não ia dar certo pq as raizes de numeros impares nao iam

dar resto 0, então verifiquei o resto 0 para o numero dado pelo valor da raiz.

 

(fmod(numero,raizdonumero)==0)

 

CODE
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.c>

 

main()

 

{

float num, x;

 

 

printf("Insira um numero inteiro positivo:\n");

scanf("%f",&num);

x=sqrt(num);

 

 

printf("%f", x);

if (fmod(num,x)==0) {

printf("\n");

printf("e quadrado perfeito.\n");

}

else {

printf("\nNao e quadrado perfeito");

}

system("PAUSE");

return EXIT_SUCCESS;

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que exatamente essa função fmod() faz??

posta o que você encontrou ae Wosh1ngton B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fmod calcula a mesma coisa que x % y só que trabalha com float (se tu for ver o operador % só vai com inteiros).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.