Ciao a tutti, sto imparando a programmare in C++ e per esercitarmi ho provato a scrivere un programma per calcolare il PI greco usando la serie di Nilakantha: p = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7*8) ... i numeri nelle parentesi sono sempre in successione e si alternano + e - come segno del 4.
Il codice è:
#include <iostream>
using namespace std;
long double PI = 3;
long int x = 2, y = 3, z = 4, cont = 0;
long int n; //quante volte viene eseguito il calcolo
signed int s = -1; //segno del 4
int main()
{
cout << "Programma per calcolare il pi greco!" << endl;
cout << "Insersci un numero, piu' grande sara' e maggiore sara' la precisione del pi greco, ma ci vorra' anche piu' tempo a calcolarlo!" << endl;
cin >> n;
while(cont < n)
{
cont ++;
s = -s;
PI += (s*4)/(x*y*z);
x += 2;
y += 2;
z += 2;
}
cout << "Il pi greco e': " << PI << endl;
}
Quando eseguo il programma, qualunque sia il valore di n che inserisco, viene stampato subito 3 come valore di PI. Ho provato a capire dove sta l'errore ma non ho concluso niente, sapreste dirmi dove sbaglio? Scusate se l'errore è banale o anche se il programma non è il massimo, ma come ripeto sto ancora imparando