При правильном подсчёте получаются значения равные 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д