/*
Obliczenie sumy pierwszych N elementów ciągu harmonicznego
ciąg harmoniczny to: 1/1 1/2 1/3 1/4 ... 1/N 1/(N+1) ...
Program prosi użytkownika o podanie liczny elementów ciągu N,
oblicza i wyprowadza sumę pierwszych N elementów ciągu.
instrukcja for(;;) { ... }
instrukcja break;
pusta instrukcja - ;
jawna konwersja na inny typ, np. (double)i
















*/
#include <iostream>

using namespace std; // w starszych kompilatorach trzeba zakomentować ten wiersz

int main()
  {
   while(true)
     {
      cout<<"Podaj ilosc elementow ciagu harmonicznego (0-koniec): ";
      unsigned N; // bo nie oczekujemy tu wartości ujemnych
      cin>>N;
      if(cin.good())
        {
         if(!N) break; // wyjście z pętli jeżeli N==0 
         double suma=0;
         //for(unsigned i=1;i<=N;++i) suma+=1./i;          // wariant A
         //for(unsigned i=1;i<=N;++i) suma+=1/(double)i;   // wariant B
         //for(unsigned i=1;i<=N;) suma+=1./i++;           // wariant C
         //for(unsigned i=0;i<N;) suma+=1./++i;            // wariant D
         //unsigned i=0; while(i<N) suma+=1./++i;          // wariant E
         for(unsigned i=0;i<N;suma+=1./++i) ;              // wariant F
         cout<<"Suma pierwszych "<<N<<" elementow ciagu harmonicznego wynosi "<<suma<<endl;
        }
      else
        {
         cin.clear();
         cout<<"Blad wprowadzenia"<<endl;
        }
      cin.ignore(1024,'\n');
      cout<<endl;
     }
   return 0;
  }


