#include #include #include #define MIN 100000 #define MAX 1000000 #define L 255 #define PDECAY 19 int decay(); void save(int *, char *); int main() { char filename[255]; int atoms[L]; printf("Inserire il numero di atomi iniziale, compreso tra %d e %d: ", MIN, MAX); scanf("%d", &atoms[0]); while ((atoms[0] < MIN) || (atoms[0] > MAX)) { printf("Input non corretto: il numero dev'essere compreso tra %d e %d: ", MIN, MAX); scanf("%d", &atoms[0]); } printf("Inserire il nome del file su cui scrivere i dati: "); scanf("%s", filename); int nmin = atoms[0]/1000; int i = 0; while (atoms[i] > nmin) { int k; atoms[i + 1] = atoms[i]; for (k = 0; k < atoms[i]; k++) { atoms[i + 1] -= decay(); } i++; } save(atoms, filename); } int decay() { int ret = 0; int x = rand() % 101; if (x < PDECAY) { ret = 1; } return ret; } void save(int atoms[], char *filename) { FILE *fd = fopen(filename, "w"); if (fd != NULL) { int i = 0; while (atoms[i] > 0) { fprintf(fd, "%d %d\n", i, atoms[i]); i++; } fclose(fd); } else { printf("Impossibile aprire il file %s\n", filename); } }