Re: [C++] programma sommatoria con ciclio

Messaggioda Planets » 17/10/2019, 23:15

Ok capito grazie ;) in questo modo il primo punto dell'esercizio viene.
Il secondo punto invece chiede:
2. Sviluppare una seconda versione che prenda un double, ε, e calcoli un approssimazione di π di “grado
n” tale che |πi−πi−1|<ε

Il codice che ho scritto io è :

Codice:
#include <iostream>
#include <cmath>

using namespace std;

int main ()

{
double pi, e;
int n,j;

cout << "Scrivere il valore di epsilon:\n";
cin >> e;

for ( j=0; j > ((4/e)-(1/2)); j++ )
pi=pi+((pow(-1,j))*4/(2*j+1));

cout << pi;

  return 0;   
}


ma quando lo eseguo mi restituisce sempre lo stesso numero, come mai?

Grazie
Planets
Junior Member
Junior Member
 
Messaggio: 74 di 154
Iscritto il: 10/07/2016, 21:33

Re: [C++] programma sommatoria con ciclio

Messaggioda vict85 » 18/10/2019, 09:50

La variable pi non è inizializzata. Quindi teoricamente assume valori casuali all'inizio.

Inoltre, la condizione j > ((4 / e) - (1 / 2)) è falsa per j = 0, quindi non entra nel ciclo. Nota inoltre che è meglio usare una variabile e cambiargli il segno invece di usare pow. Inoltre, non usi la variabile n, e puoi definire j direttamente nel for.
vict85
Moderatore
Moderatore
 
Messaggio: 9892 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [C++] programma sommatoria con ciclio

Messaggioda vict85 » 18/10/2019, 10:11

Io comunque avrei seguito un diverso approccio per le condizioni e il ciclo:
Codice:
    double pi = 0.; // initial value
    double delta = 1.;
    double sign = 1.;
    for (double delta = 1.; e * delta < 1.; delta += 2., sign *= -1.)
    {
        pi += sign / delta;
    }
    pi *= 4;
vict85
Moderatore
Moderatore
 
Messaggio: 9893 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite