Esercizio 6
Scrivere un algoritmo che somma i primi 100 termini della seguente successione 1/1, 1/2, 1/3, 1/4, ..1/100 e stampa il risultato a video.
Una prima versione col ciclo for potrebbe essere la seguente.
#include <iostream>
using namespace std;
int main(){
const int N= 100;
int i=1;
float sum=0;//somma
for(i=1;i<N+1;i++)sum+=(float)1/i;
cout<<"somma:"<<sum;
return 0;
}
Evidentemente la somma sum di tutti i numeri frazionari deve essere memorizzata come numero dotato di virgola cioč di tipo float; questo risultato si raggiunge con l'istruzione:
sum+=(float)1/i;
dove la scrittura (float)1/i forza il compilatore
a considerare la divisione tra due numeri interi come un numero reale in
virgola mobile e non come un quoto dotato di un eventuale resto.
Al ciclo for poteva essere preferito un ciclo while
o do-while con le seguenti caratteristiche:
do{
sum=sum+(float)1/i;
i++;
}while(i<N+1);