//Autore: F. Sacco
//Breve descrizione del programma: Stima tempi per far uscire la sequenza di DNA corretta

#include<stdio.h>
#include <stdlib.h>

int   main() {
	char invio;
	long double casi_possibili, operazioni;
	int lunghezzaDNA;
	int i;
	FILE *fd;
	printf("Numero di operazioni compiute dal PC in un secondo --------->");
	scanf("%Lf%c", &operazioni, &invio);
    
    fd=fopen("TempiDNA.txt","w");
    fprintf(fd,"______________________________________________________________________________________________\n");
    fprintf(fd,"Stima dei tempi per generare sequenza di DNA con un computer \nche fa %10.0Lf operazioni al secondo:\n",operazioni);
    
	for (lunghezzaDNA = 1; lunghezzaDNA < 45; lunghezzaDNA++) {
        casi_possibili = 4;
		for (i = 1; i < lunghezzaDNA; i++)
			casi_possibili *= 4;
		fprintf(fd,"______________________________________________________________________________________________\n");
		fprintf(fd,"\nTentativi medi per far uscire la sequenza DNA lunga %d lettere=%20.0Lf", lunghezzaDNA, casi_possibili / 2);
		fprintf(fd,"\nNumero di secondi (in media) richiesti=%20Lf", casi_possibili / (operazioni * 2));
		fprintf(fd,"\nNumero di giorni  (in media) richiesti=%20Lf", casi_possibili / ((long double)(operazioni * 2) * 86400));
		fprintf(fd,"\nNumero di anni    (in media) richiesti=%20Lf", casi_possibili / ((long double)(operazioni * 2) * 86400 * 365));
		fprintf(fd,"\n(Eta' dell'universo in anni=13 miliardi e 800 milioni, in giorni = %20LF", (long double)13800000000 * 356.4);
		fprintf(fd,"\n");
	}
	fclose(fd);
	system("TempiDNA.txt");  // Lancia l'applicazione legata ai file .txt (di solito blocco note windows)
	return 0;
}
