Calcular PI com c#
Bom dia, estou começando em c#, estava tentando montar um programa que calcule o pi, mas o resultado está errado.
Aqui está o programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double f,i=1,pi, pi2;
for (i = 1; i <= 10; i++)
{
pi2=((i)*2+1);
pi=(4/1)-(4/pi2);
if (i % 2 == 0)
{ continue; }
else
pi2 = pi2 * (-1);
Console.WriteLine("", pi);
}
Console.ReadLine();
}
}
}
Se puderem me ajudar, eu agradeço.
Aqui está o programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double f,i=1,pi, pi2;
for (i = 1; i <= 10; i++)
{
pi2=((i)*2+1);
pi=(4/1)-(4/pi2);
if (i % 2 == 0)
{ continue; }
else
pi2 = pi2 * (-1);
Console.WriteLine("", pi);
}
Console.ReadLine();
}
}
}
Se puderem me ajudar, eu agradeço.
Hobr
Curtidas 0
Respostas
Marcelo Silva
14/10/2010
o c# ja tem uma classe que retorna PI e a Math.PI em todo caso segue dois links.
http://www.gamedev.net/community/forums/topic.asp?topic_id=427333
http://www.java2s.com/Code/ASP/Development/MathPIC.htm
GOSTEI 0
Hobr
14/10/2010
Muito obrigado, funcionou perfeitamente, mas a minha dúvida mesmo era com relação a este código que eu fiz, eu gostaria de fazer ele funcionar.
Deve ter algum erro de lógica ou de programação mesmo, já que eu estou começando, não consigo identificar tais erros.
Deve ter algum erro de lógica ou de programação mesmo, já que eu estou começando, não consigo identificar tais erros.
GOSTEI 0
Hobr
14/10/2010
Eu dei uma penssada aqui e cheguei a isso:
double f, i = 1, pi, pi2;
for (i = 1; i <= 10000; i++)
{
pi = (4 / 1) - (4 / 3) + (i= 4 / (i * 2 + 3));
if (i % 2 != 0)
{
i = Math.Pow(i, -1);
}
Console.WriteLine(pi);
}
Só que o resultado não sai de 3,4
O maximo que eu cheguei foi a 3,17
Alguém pode me ajudar?
double f, i = 1, pi, pi2;
for (i = 1; i <= 10000; i++)
{
pi = (4 / 1) - (4 / 3) + (i= 4 / (i * 2 + 3));
if (i % 2 != 0)
{
i = Math.Pow(i, -1);
}
Console.WriteLine(pi);
}
Só que o resultado não sai de 3,4
O maximo que eu cheguei foi a 3,17
Alguém pode me ajudar?
GOSTEI 0
Vinicius Vieira
14/10/2010
parceiro o que você ta tentando fazer um programa para ficar achando as próximas casa da dizima periódica que é o pi é isso?
GOSTEI 0
Vinicius Vieira
14/10/2010
Explica certinho, que no que for referente a linguagem eu posso te ajudar;
GOSTEI 0
Hobr
14/10/2010
Isso mesmo, a conta seria:
Pi= (4/1)-(4/3)+(4/5)-(4/7)+.....
Só que não estou conseguindo fazer.
Pi= (4/1)-(4/3)+(4/5)-(4/7)+.....
Só que não estou conseguindo fazer.
GOSTEI 0
Jackson Fraga
14/10/2010
cara... o PI mto louco... até hj poucas calculador conseguem efetuar este procedimento!!!
[CODE]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NumeroPI
{
class Program
{
static void Main(string[] args)
{
double pi = 0;
double divisor = 1;
for (int i = 1; i < 999999999; i++)
{
if ((i % 2) != 0)
{
pi += (4 / divisor);
}
else
{
pi -= (4 / divisor);
};
divisor += 2;
Console.WriteLine(pi.ToString());
};
Console.WriteLine(pi.ToString());
Console.ReadKey();
}
}
}
[/CODDE]
[CODE]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NumeroPI
{
class Program
{
static void Main(string[] args)
{
double pi = 0;
double divisor = 1;
for (int i = 1; i < 999999999; i++)
{
if ((i % 2) != 0)
{
pi += (4 / divisor);
}
else
{
pi -= (4 / divisor);
};
divisor += 2;
Console.WriteLine(pi.ToString());
};
Console.WriteLine(pi.ToString());
Console.ReadKey();
}
}
}
[/CODDE]
GOSTEI 0
Hobr
14/10/2010
Obrigado Jackson, é isso mesmo o que eu queria, se não for pedir muito, você poderia me explicar algumas coisas?
O que seria esses:
pi- e p+
Console.ReadKey()
Console.WriteLine(pi.ToString()) (não poderia ser só "Console.WriteLine (pi) ?)
O que seria esses:
pi- e p+
Console.ReadKey()
Console.WriteLine(pi.ToString()) (não poderia ser só "Console.WriteLine (pi) ?)
GOSTEI 0
Jackson Fraga
14/10/2010
pi- e p+
técnicamente (C#)
pi += (4 / divisor);
é a mesma coisa q...
pi = pi + (4 / divisor);
a mesma coisa ocorre qdo
pi -= (4 / divisor);
pi = pi - (4 / divisor);
valor++;
valor = valor + 1;
valor--;
valor = valor - 1;
matematica é feito isso pois, o pi é 4 dividido pelo divisor, porem uma vez é feito somando e a proxima é subtraindo... essa forma é a forma mais primitiva, tanto que existe milhares de divisões até encontrar o valor correto, dai isso eu realmente não sei explicar
Console.ReadKey()
este comando aguarda o pressionamento de uma tecla qualquer, seria um "PAUSE"
Console.WriteLine(pi.ToString()) (não poderia ser só "Console.WriteLine (pi) ?)
bem, por constume eu sempre converto para string... mas o C# aceita no WriteLine varios tipos de dados!!!
eu tenho este costume pois geralmente eu utilizao formatação:
salario.ToString("'R$' #,###0.00"); // por exemplo
técnicamente (C#)
pi += (4 / divisor);
é a mesma coisa q...
pi = pi + (4 / divisor);
a mesma coisa ocorre qdo
pi -= (4 / divisor);
pi = pi - (4 / divisor);
valor++;
valor = valor + 1;
valor--;
valor = valor - 1;
matematica é feito isso pois, o pi é 4 dividido pelo divisor, porem uma vez é feito somando e a proxima é subtraindo... essa forma é a forma mais primitiva, tanto que existe milhares de divisões até encontrar o valor correto, dai isso eu realmente não sei explicar
Console.ReadKey()
este comando aguarda o pressionamento de uma tecla qualquer, seria um "PAUSE"
Console.WriteLine(pi.ToString()) (não poderia ser só "Console.WriteLine (pi) ?)
bem, por constume eu sempre converto para string... mas o C# aceita no WriteLine varios tipos de dados!!!
eu tenho este costume pois geralmente eu utilizao formatação:
salario.ToString("'R$' #,###0.00"); // por exemplo
GOSTEI 0
Hobr
14/10/2010
Obrigado pela explicação, eu só estou com mais uma dúvida.
Acho que eu não estava usando corretamente o for, se você puder me explicar isso eu acho que entenderei como se usa corretamente:
for (int i = 1; i < 100000; i++)
{
if ((i % 2) != 0)
{
pi += (4 / divisor);
}
else
{
pi -= (4 / divisor);
};
divisor += 2;
Eu pensava que precisava colocar o "i" junto na conta (achava que com o "i" na conta ele faria a conta novamente e só adicionaria +1 ao i, mas você não precisou usar, a minha pergunta é, onde ele está acrescentando +1 ali?
Sei que minha pergunta é realmente tosca, mas eu não entendi, fico grato pela sua ajuda.
Acho que eu não estava usando corretamente o for, se você puder me explicar isso eu acho que entenderei como se usa corretamente:
for (int i = 1; i < 100000; i++)
{
if ((i % 2) != 0)
{
pi += (4 / divisor);
}
else
{
pi -= (4 / divisor);
};
divisor += 2;
Eu pensava que precisava colocar o "i" junto na conta (achava que com o "i" na conta ele faria a conta novamente e só adicionaria +1 ao i, mas você não precisou usar, a minha pergunta é, onde ele está acrescentando +1 ali?
Sei que minha pergunta é realmente tosca, mas eu não entendi, fico grato pela sua ajuda.
GOSTEI 0
Vinicius Vieira
14/10/2010
Ele ta acrescentando +1 ao i no próprio for onde já define o incremento a cada iteração onde tá escrito i++, ele só usa o i para saber se é hora de fazer + ou -, verificando se é impar ou par e usa o divisor que ele adiciona sempre mais 2 de forma que sempre seja ímpar.
GOSTEI 0