C/C++ erro em calculo

1. C/C++ erro em calculo

José Antônio Nunes de Morais
janunesdemor

(usa Slackware)

Enviado em 09/08/2009 - 17:10h

Prezados,

Eu estava fazendo um teste, do calculo de um ano luz.

Bom todos sabemos que a velocidado de luz é de 300.000kms, ou seja 300 mil kilometros por segundo.
Bom então estava estando, veja o exemplo abaixo.

// Programa para calcular um ano luz.
#include <iostream>
using namespace std;
int main()
{
cout<<"\n\n";
long int luz; // Variavel Luz
unsigned int calc; //Variavel calc
int segundo,minuto,hora,dia,ano; //Variaveis de segundo a ano.
segundo = 60;
minuto = 60;
hora = 60;
dia = 24;
ano = 365;
luz = (1*segundo*minuto*hora*dia*ano);
calc = luz * 2;
cout<< calc<<"\n\n"<<luz<<"\n\n"<<calc+lua<<"\n\n";
}



resultado de calc = 3784320000

resultado de luz = 1892160000

Seria a soma de calc + luz = 1381512704
Lógico que isto esta errado. isto que o programa restorna.

Multiplicando por 3 e não por 300.000, mas como a mairia sabe basta acrescentar ao resultado os cinco zero estaria correto.

Porque deste erro algum sabe.





  


2. Re: C/C++ erro em calculo

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 09/08/2009 - 21:07h

o correto eh:
luz = (1*minuto*hora*dia*ano);

ou seja:
1min tem 60s
1h tem 60min
1d tem 24h
1a tem 356d
multiplique os valores da direita e tera o numero de segundos em 1 ano (31536000)

entao: 1 ano-luz = 31536000s * 300000km/s = 9460800000000km


3. c/c++ erro em cálculo

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

Enviado em 17/08/2009 - 00:22h

Olá,

Obtive o resultado definindo as variáveis como unsigned long long int da seguinte forma:

#include <iostream>
using namespace std;
int main()
{
unsigned long long int velocidade;
unsigned long long int distancia;
unsigned long long int tempo;
//lembrando: velocidade = distancia / tempo; então, distancia = velocidade X tempo
velocidade = 300000; //velocidade da luz = 300.000 quilômetros/segundo
tempo = 365*24*60*60; //tempo de um ano em segundos
distancia = velocidade * tempo; //distância de 1 ano-luz em quilômetros
cout << "Um ano-luz equivale a: " << endl;
cout << distancia << " km" << endl;
return 0;
}

Após g++ anoluz.cpp -o anoluz
e
./anoluz
obtive o resultado 9.460.800.000.000 km
que é a distância de 1 ano-luz em quilômetros.
Confere?

Grato,

Luiz
http://twitter.com/lcmoura






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts