Scavo di un tunnel in C

di il
2 risposte

Scavo di un tunnel in C

Vorrei chiedervi un parere su questo testo:
Cattura.PNG
Cattura.PNG

Io l'ho realizzato cosi:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
double boom();
int pioggia(int i, double v[]);
int main() {
    srand(time(NULL));
    int n, i=0, j=0, rain;
    do {
        printf("Inserire il numero di giorni di maltempo per ogni mese: ");
        scanf("%d",&n);
        if (n < 3 || n > 12)
            printf("ERRORE: il numero di giorni di maltempo appartiene all'intervallo [3,12]\n");
    } while (n < 3 || n > 12);
    double stagione[4], l, diff = 57000.0;
    stagione[0] = 0.92*n/30.0;
    stagione[1] = 0.94*n/30.0;
    stagione[2] = 0.65*n/30.0;
    stagione[3] = 0.58*n/30.0;
    do {
        l = boom();
        diff -= l;
        i++;
        j++;
        if (j%360 == 0)
            i = 0;
        rain = pioggia(i,stagione);
        if (rain == 1) {
            do {
                i++;
                j++;
                if (j%360 == 0)
                    i = 0;
                rain = pioggia(i,stagione);
            } while (rain == 1);
        }
        if (j%30 == 0) {
            printf("Sono trascorsi %d giorni\n",j+1);
            printf("Rimane da scavare %lf km\n",(diff)/1000.0);
        }
    } while (diff > 0);
    printf("Il tunnel e' terminato, sono trascorsi %d giorni dall'inizio dell'operazione\n",j+1);
}

double boom() {
    return 24.0*rand()/((double)RAND_MAX) + 24;
}

int pioggia(int i, double v[]) {
    double p = rand()/((double)RAND_MAX);
    if (i >= 0 || i < 90) {
        if (p > v[1])
            return 0;
        else
            return 1;
    }
    else if (i >= 90 || i < 180) {
       if (p > v[2])
            return 0;
        else
            return 1;
    }
    else if (i >= 180 || i < 270) {
        if (p > v[3])
            return 0;
        else
            return 1;
    }
    else if (i >= 270 || i < 360) {
        if (p > v[4])
            return 0;
        else
            return 1;
    }
}
Quale potrebbe essere un modo migliore di farlo? Alcune scelte mi sembrano un pò "macchinose"

2 Risposte

  • Re: Scavo di un tunnel in C

    1) lo hai provato?
    2) esistono tanti modi di risolverlo quante solo le teste dei programmatori

    Se certe scelte ti sembrano 'macchinose' ALLORA trova un modo alternativo per farle

    Comunque, NO, non va bene.
    Rileggi BENE il testo!
    In particolare la storia del maltempo E dei guorni di sospensione DOPO il maltempo.
  • Re: Scavo di un tunnel in C

    1) L'ho realizzata io la soluzione pubblicata, per cui certo che l'ho provato
    2) So anche questo, ho solo chiesto se qualcuno può trovare qualche accorgimento perchè sono sicuro che ci sia.

    Modificato il codice dopo suggerimento
Devi accedere o registrarti per scrivere nel forum
2 risposte