Ir para o conteúdo
jonhhy

soma dos quadrados(elevados a dois)

Mensagens Recomendadas

jonhhy

boas, o programa é este:

#include <stdio.h>
#include <math.h>
int main (void)
{
int l1,l2,l3;
float soma; puts("escreve os valores para os lados");
scanf ("%d%d%d",&l1,&l2,&l3);
soma = l1*l1 + pow(2.0,l2) +l3*l3;
printf("a soma dos quadrados é %i exatamente:\n",&
soma);
}

e traz o erro de dar valores incrivelmente grande e negativos (até ao momento).

qual o erro consequente do programa?

agradenço desde já a vossa ajuda :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Em primeiro lugar, no printf não precisas do &, e devias ter %f em vez de %i (ou então passa a usar inteiros em todo o lado).

Depois, lê a documentação da função pow (ou então não a uses).

SYNOPSIS

#include <math.h>

double

pow(double x, double y);

long double

powl(long double x, long double y);

float

powf(float x, float y);

DESCRIPTION

The pow() functions compute x raised to the power y.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Tira o & do printf, isso só é preciso no scanf. O scanf precisa do endereço (função do &) e o printf não.


Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jonhhy

Em primeiro lugar, no printf não precisas do &, e devias ter %f em vez de %i (ou então passa a usar inteiros em todo o lado).

Depois, lê a documentação da função pow (ou então não a uses).

já percebi porque a minha stora diz pra não usar-mos o pow para inteiros(com isso ñ sei bem onde quer chegar, mas no meu ver referia-se ao espaço ocupado e ele deve fazer algum tipo de mudança de tipos para qur funcione...)

pois como o tipo da variável a ser usada é do tipo double: ela costuma dizer que se fizer-mos desta forma ela diz:"estamos a usar um canhão para matar-mos uma mosca".

já agora Rui Carlos,

obrigado pelo post deu para perceber o que tinha mudar. MAs eu com float's consegui usar a função pow:

#include <stdio.h>
#include <math.h>
int main (void)
{
float l1,l2,l3;
float soma; puts("escreve os valores para os lados");
scanf ("%f%f%f",&l1,&l2,&l3);
soma = pow(l1,2) + pow(l2,2) + pow(l3,2);
printf("a soma dos quadrados é %f exatamente:\n",soma);
}

:thumbsup:

o resultado parece correto!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

pois como o tipo da variável a ser usada é do tipo double: ela costuma dizer que se fizer-mos desta forma ela diz:"estamos a usar um canhão para matar-mos uma mosca".

depende ...

efectuar o calculo de algo como 123^123 não é muito bonito sem usar algo como a função pow

no entanto, como estás a calcular a potencia de 2, isso é facilmente resolvido pela matemática:

x^2 = x * x

como fizeste no teu primeiro código.

além disso, tens de perceber que o computador tem um canhão específico para fazer esse tipo de coisas, chamasse ALU.

no final de contas, existe um pró e um contra no uso da função pow para inteiros:

pro - legibilidade >> é muito mais fácil ler código escrito dessa forma

contra - elevação do tipo de dados implícita >> como estás a chamar uma função que requer doubles ao qual lhe dás inteiros, os dados são convertidos para o tipo double para se poder efectuar a chamada correctamente. e isso tem um ínfimo overhead.

na minha opinião, usa a função pow que é para isso que ela é usada.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.