Calcular PI com c#

14/10/2010

0

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

Responder

Posts

15/10/2010

Marcelo Silva

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
Responder

15/10/2010

Hobr

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.
Responder

15/10/2010

Hobr

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

15/10/2010

Vinicius Vieira

parceiro o que você ta tentando fazer um programa para ficar achando as próximas casa da dizima periódica que é o pi é isso?
Responder

15/10/2010

Vinicius Vieira

Explica certinho, que no que for referente a linguagem eu posso te ajudar;
Responder

15/10/2010

Hobr

Isso mesmo, a conta seria:


Pi= (4/1)-(4/3)+(4/5)-(4/7)+.....

Só que não estou conseguindo fazer.
Responder

16/10/2010

Jackson Fraga

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]
Responder

16/10/2010

Hobr

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

Responder

17/10/2010

Jackson Fraga

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
Responder

18/10/2010

Hobr

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.
Responder

19/10/2010

Vinicius Vieira

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar