[1] Praticamente vuoto. [2] I numeri che vengono generati non sono interi compresi tra 0 e 9, ma double compresi tra 0 e 9.999999... Mi spiegate a cosa serve l'if per contare le frequenze? L'istruzione dentro l'if e' eseguita solo quando arr[i]==j, cioe' quando j==arr[i], quindi e' come se si mettesse nell'istrzuione arr[i] al posto di j. A questo punto j non compare piu' tra le istruzioni e il ciclo diventa inutile. L'array non e' stato inizializzato a 0: come si puo' incrementare una variabile di cui non si conosce il valore iniziale? h e' stata inizializzata, ma quando il punto in cui si usa h la prima volta e' lontano dalla dichiarazione conviene assegnarne il valore iniziale vicino a questo punto. A che serve il ciclo j per il calcolo delle distribuzioni delle medie? Mancano dal calcolo delle medie tutti i valori interi. [3] Non avete inizializzato dist2. Non generate tra 0 e 9, ma tra 0 e 10 e non generate degli interi. Non usate costanti per N, M, etc.(benche' siano definite). Disordine. [4] Perche' definite le costanti se poi non le usate? Qual e' il significato dell'istruzione s=j nel ciclo di calcolo delle medie? L'array medie e' (o meglio dovrebbe essere) vuoto all'inizio. Invece lo usate per calcolare le medie stesse. [5] Non usate costanti. Non ci sono controlli sui dati inseriti. Troppe istruzioni per fare operazioni elementari (ad esempio, ben 3 istruzioni per generare il numero casuale). Nel ciclo di scrittura su file c'e' un incomprensibile fscanf. Da dove dovrebbe essere letto dist[i]? A cosa serve l'array bidimensionale? I ciclo in cui c'e' medie[i]!='11' e' davvero incomprensibile. Rinuncio a capire... [6] ASSENTI [7] Ci sono due cicli in cui si assegna il valore di dist, ma siccome tra l'uno e l'altro non se ne azzerano le componenti il conto e' sbagliato. I due cicli non servono. Secondo me non avete capito la differenza tra il ciclo di conteggio (che avete copiato senza capirlo) e quello di stampa. Il ciclo per il calcolo delle medie sembra corretto, ma mi sa che lo avete copiato... [8] Il casting di (rand()%10) non serve: e' un intero! dist non e' mai stato azzerato. [9] Quando un'operazione (come N/m) e' ripetuta conviene assegnare il valore di questa a una variabile. E' anche brutto avere un'operazione nelle espressioni dei cicli. E' un po' troppo disordinato. [10] Un po' di disordine. [11] Quando un define contiene operazioni e' necessario usare le parentesi (vedi libro). A che serve fabs? Non si capisce perche' serve un array per k_n visto che e' una costante. In ogni caso se ne usa una sola componente. Ho la sensazione che non vi sia chiaro come si assegnano i valori a un array. Mancano anche dei ;. Poi c'e' l'istruzione k_n[j]; che e' a dir poco oscura: a che serve? [12] Le variabili si dichiarano sempre a inizio blocco! C'e' solo la prima parte (generazione e stampa della distribuzione uniforme). [13] ASSENTI [14] Perche' non usate le costanti nel codice? Non c'e' controllo che N/M sia intero. La generazione del numero casuale e' inutilmente complicata. Per di piu' in questo modo non si esclude la possibilita' di generare 10. E' meglio aprire i file quando serve, non all'inizio. [15] Un po' poco, benche' corretto... [16] Disordine. A che serve fabs? Facendo partire j da 1 saltate un elemento e superate il limite dell'array. Al primo uso s non e' azzerata. s e' un intero: diviso per un intero non da la media. E' vero che poi si deve scriverne la distribuzione per cui serve quel numero, ma media resta un array di medie, dunque di float. [17] dist[X[0]] = 0?????? Quando un'operazione (come N/M) e' ripetuta conviene assegnare il valore di questa a una variabile. E' anche brutto avere un'operazione nelle espressioni dei cicli. Manca la scrittura su file. Disordine. [18] dist[data[0]] = 0????? Chi ha inventato questa tecnica? Voi o il gruppo 17? C'e' solo la distribuzione piatta. [19] Non serve il cast di rand()! E' gia' un intero! [20] Disordine. Anzi, molto disordine. [21] Non si puo' dichiarare un array medie[h] senza assegnare un valore ad h. E' per questo che avete il segmentation fault. [22] A che serve l'istruzione dist[num[i]];? Tutta la parte dopo la generazione della distribuzione piatta e' sbagliata. [23] Le variabili si dichiarano tutte all'inizio del blocco! Fino al calcolo delle medie e' giusto, ma poi non scrivete sul file la distribuzione dei valori delle medie, ma i primi m valori delle medie. [24] ASSENTI [25] Non va bene usare due costanti diverse per due indici che, per definizione, sono uguali. Non avete azzerato dist. Perche' partire da j=1 quando poi bisogna fare i salti mortali per farlo diventare zero? La media non si calcola cosi'. Che razza di conto e'? Sommate tra loro a coppie i valori delle medie tempranee ottenute in iterazioni diverse. [26] ASSENTI [27] ASSENTI [28] ASSENTI [29] ASSENTI [30] ASSENTI [31] 55, 5 e 1000 non sono legati tra loro da nessuna relazione ragionevole. Il metodo alternativo mi pare poco appropriato. Mi spiegate a che server l'if? Non c'e' il calcolo della distribuzione gaussiana. [32] Non avete azzerato dist. dist non puo' avere le stesse dimensioni di X. [33] Non avete azzerato dist. fprintf funziona come printf. Che c'entra l'&? [34] ASSENTI [35] A che serve l'if per calcolare la distribuzione? Le variabili si dichiarano all'inizio del blocco. distm[4]??? Perche' partire da j=1 con il ciclo se poi all'interno si usa j-1 per farlo diventare 0? L'uso di distm mi e' incomprensibile. [36] Non azzerate dist. I numeri estratti non sono da 0 a 9, ma da 1 a 10. L'algoritmo per riempire dist cosi' non puo' funzionare. [37] ASSENTI [38] ASSENTI