//Loop Menu - Donato Modugno 19/10/2016
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
using namespace std;

main () {
	int a,i,x;
	float n,r;
	cout << "Loop Menu - Donato Modugno 19/10/2016\n\n";
	while (a!=3) {
	cout << "Scegli un'opzione\n";
	cout << "Inserisci 0 per calcolare la radice quadrata indicando il numero di iterazioni\n";
	cout << "Inserisci 1 per calcolare Pi greco\n";
	cout << "Inserisci 2 per calcolare il numero di Nepero\n";
	cout << "Inserisci 3 per chiudere il programma\n";
	cin >> a;	
	switch (a) {
	case 0:
		cout << "\nInserisci un numero: ";
		cin >> n;
		cout << "Inserisci il numero massimo di iterazioni: ";
		cin >> x;
		r=n;
		for (i=0;i<x;i++) {
			if (i==0) r=n/2;
			else r=(r+n/r)/2;
			}
		cout << "Il risultato e' " << r << "\n\n";
		break;
	case 1:
		//tutto copiato dal libro
		int conta,dentro,tanti;
		dentro=0;
		tanti=100000;
		float nn,xx,yy,pi;
		srand(time(NULL));
		for (conta=0;conta<tanti;conta++) {
			nn=rand();
			xx=((double)nn)/RAND_MAX;
			nn=rand();
			xx=((double)nn)/RAND_MAX;
			if (xx*xx+yy*yy<1) ++dentro;
		}
		pi=4*dentro/(double)tanti;
		cout << "\nCalcolo del Pi greco col Metodo Montecarlo: " << pi;
		cout << "\nSono stati generati "<< tanti << " numeri\n\n";
		break;
	case 2:
		int ne; 
		float f,e,i; 
		ne=1;
		f=1;
		e=2;
		while(ne++<30) { 
		f = f * ne;
		i = 1/f; 
		e = e + i; 
		}
		cout << "\nIl numero di Nepero vale: "<< e << "\n\n";
		break;
	case 3: break;
	default:
		cout << "\nScelta non valida\n\n";
		break;
	}
	}
}