При правильном подсчёте получаются значения равные 0 - C#
Формулировка задачи:
Здравствуйте, друзья. Мучает очень сильно такой вопрос: В цикле(который я отделил пунктирной линией) происходит подсчет некоторых значений в переменную
j[p]
. Вот сам подсчетj[p] = (q[i]/tests_count)*100, где q[i] = {1,1,2,1} и tests_count = 5;
Как видно, значения все имеются и я каждое значение (q[i], tests_count) выводил отдельно в listbox для проверки, всё так, как описал выше, но при подсчёте, все элементы на выходе(j[p])
равны нулю. Никто не подскажет, что за полтергейст крадет мне мои проценты и как с ним бороться?private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { selected_product = comboBox2.Items[comboBox2.SelectedIndex].ToString(); double tests_count; double occus_count; MySqlConnection connect = new MySqlConnection("server=" + server + ";user=" + login + ";database=" + database + ";password=" + password + ";"); MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM tests WHERE selected_product=" + "'" + selected_product + "'", connect); MySqlCommand cmd2 = new MySqlCommand("SELECT COUNT(*) FROM occupation", connect); MySqlCommand cmd3 = new MySqlCommand("SELECT * FROM occupation", connect); MySqlCommand cmd4 = new MySqlCommand("SELECT selected_occu FROM tests WHERE selected_product=" + "'" + selected_product + "'", connect); connect.Open(); tests_count = Convert.ToInt32(cmd.ExecuteScalar()); occus_count = Convert.ToInt32(cmd2.ExecuteScalar()); connect.Close(); MySqlDataReader dr; MySqlDataReader dr2; MySqlDataReader dr3; int[] q = new int[Convert.ToInt32(occus_count)]; string[] occus_line = new string[Convert.ToInt32(occus_count)]; string[] tests_line = new string[Convert.ToInt32(tests_count)]; connect.Open(); dr = cmd3.ExecuteReader(); int t = 0; while (dr.Read()) { occus_line[t] = dr["occu_pation"].ToString(); t++; } connect.Close(); int p = 0; double[] j = new double[Convert.ToInt32(tests_count)]; string[] s = new string[Convert.ToInt32(tests_count)]; chart2.Series[0].Points.Clear(); //---------------------------------------------------------------------------------------------------------------------------------------- for (int i = 0; i < occus_count; i++) { connect.Open(); dr2 = cmd4.ExecuteReader(); while (dr2.Read()) { if (occus_line[i] == dr2["selected_occu"].ToString()) { q[i] = q[i] + 1; } } connect.Close(); if (q[i] > 0) { MySqlCommand cmd5 = new MySqlCommand("SELECT * FROM occupation WHERE occu_id=" + "'" + (i + 1) + "'", connect); j[p] = (q[i] / tests_count); connect.Open(); dr3 = cmd5.ExecuteReader(); while (dr3.Read()) { s[p] = dr3["occu_pation"].ToString(); } chart2.Series[0].Points.AddXY(s[p] + " " + Math.Round(j[p]) + " %", Math.Round(j[p])); listBox1.Items.Add(s[p]); p++; connect.Close(); } } //---------------------------------------------------------------------------------------------------------------------------------------- }
Решение задачи: «При правильном подсчёте получаются значения равные 0»
textual
Листинг программы
j[p] = (double)q[i] / tests_count;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д