Ciao a tutti, sono alle "prime armi" con c#...avrei bisogno di una mano...ho da fare un controllo su alcuni dati...il problema è che ho estratto questi dati da un database access 97 esportati in excel e adesso sto cercando di fare un programmino che calcoli la media geometrica di questi valori (media geometrica = (va1*...*valN)^1/N)....questi valori che devo prendere stanno nella colonna 4 e partono da riga 2 (la riga 1 sono i nomi dei campi)..ho buttato giu questo codice:
praticamente con un ciclo for che parte da 2 (la prima riga) fino all'ultima compresa moltiplico il coefficiente per il valore di questa riga...dai risultati che da (mi stampa Infinito e la media finale è 1) secondo me non prende correttamente il valore della cella....qualcuno sa come aiutarmi???codice:public static double mediaGeometrica(String filename) { // apro il file excel Application app = new Application(); //app.Visible = true; try { Workbook excel = app.Workbooks.Open(filename); Worksheet sheet = excel.Worksheets.get_Item(1); // calcolo esponente x cui elevare il coeff finale come 1 / numero di righe del file xls meno 1 (la riga con i nomi dei campi) double exp = 1 / (sheet.UsedRange.Rows.Count - 1); // inizializzo il coeff della media geometrica coeff = 1 double coeff = 1; // per ognuno dei valori dell'array degli esami for (int i = 2; i <= sheet.UsedRange.Rows.Count; i++) { coeff = coeff * (double)(sheet.UsedRange.Cells[i, 4] as Range).Value; // moltiplico il coeff per il valore dell'esame --> produttoria dei valori degli esami Console.WriteLine(coeff); } return System.Math.Pow(coeff, exp); // ritorno il valore della media geometrica (TT [i=1:n] value[i])^(1/n) } catch (Exception e) { Console.WriteLine(e.Message); return 0; } }![]()

Rispondi quotando