Calcular PI com c#

.NET

14/10/2010

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.

Hobr

Hobr

Curtidas 0

Respostas

Marcelo Silva

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

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.
GOSTEI 0
Hobr

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?
GOSTEI 0
Vinicius Vieira

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

Vinicius Vieira

14/10/2010

Explica certinho, que no que for referente a linguagem eu posso te ajudar;
GOSTEI 0
Hobr

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.
GOSTEI 0
Jackson Fraga

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]
GOSTEI 0
Hobr

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) ?)

GOSTEI 0
Jackson Fraga

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
GOSTEI 0
Hobr

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.
GOSTEI 0
Vinicius Vieira

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
POSTAR