#include<stdio.h>      /* precis */
#include<math.h>
/* Programma che calcola la serie armonica "somme di 1/i
con i variante tra 1 e un numero intero positivo n dato
in input.
Il calcolo avviene due volte.
La prima volta i valori 1/i vengono sommati per i da 1 a n.
In questo caso i valori piu' grandi di 1/i vengono aggiunti
dall' inizio. Il loro errore di rappresentazione (piu' grande
rispetto ai valori successivi) ha effetto presto e si propaga
a lungo durante le somme.
L seconda volta il risultato e' ottenuto sommando i valori 1/i
con i=n...1. In questo caso i numeri piu' grandi (e meno precisi)
vengono aggiunti piu' tardi; quindi gli errori maggiori nella

rappresentzione dei numeri aggiunti hanno effetto piu' tardi
(si propagano di meno sulle somme successive) e il risultato
finale e' piu' preciso.
*/

int main( )
{

float somma,sommabis;
int i,n;
char continua;
somma=0;
sommabis=0;
printf("\n Calcolo della serie armonica da 1 a.....");
scanf("\n%d",&n);
for(i=1;i<=n;i++)
{
/* printf("%22.20f + %22.20f = ",somma,1/i); */
somma=somma+(float)1/i;
/* printf("\n %22.20f",somma);*/
}
printf("\n serie armonica da 1 a %4d : %22.20f",n,somma);
printf("\n Premere un carattere diverso da u per proseguire ed invio\n");
scanf("\n%c",&continua);
continua=toupper(continua);
if( continua!='U') ;
else exit();
printf("\nCalcolo della serie armonica da %4d a 1",n);
for(i=n;i>=1;i--)
 {
 sommabis=sommabis+(float)1/i;
 }
printf("\n Serie armonica da %4d a 1 : %22.20f\n",n,sommabis);
return  0; }

return to programmi