edutecnica

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