При правильном подсчёте получаются значения равные 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])

равны нулю. Никто не подскажет, что за полтергейст крадет мне мои проценты и как с ним бороться?
Листинг программы
  1. private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
  2. {
  3. selected_product = comboBox2.Items[comboBox2.SelectedIndex].ToString();
  4. double tests_count;
  5. double occus_count;
  6. MySqlConnection connect = new MySqlConnection("server=" + server + ";user=" + login + ";database=" + database + ";password=" + password + ";");
  7. MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM tests WHERE selected_product=" + "'" + selected_product + "'", connect);
  8. MySqlCommand cmd2 = new MySqlCommand("SELECT COUNT(*) FROM occupation", connect);
  9. MySqlCommand cmd3 = new MySqlCommand("SELECT * FROM occupation", connect);
  10. MySqlCommand cmd4 = new MySqlCommand("SELECT selected_occu FROM tests WHERE selected_product=" + "'" + selected_product + "'", connect);
  11. connect.Open();
  12. tests_count = Convert.ToInt32(cmd.ExecuteScalar());
  13. occus_count = Convert.ToInt32(cmd2.ExecuteScalar());
  14. connect.Close();
  15. MySqlDataReader dr;
  16. MySqlDataReader dr2;
  17. MySqlDataReader dr3;
  18. int[] q = new int[Convert.ToInt32(occus_count)];
  19. string[] occus_line = new string[Convert.ToInt32(occus_count)];
  20. string[] tests_line = new string[Convert.ToInt32(tests_count)];
  21. connect.Open();
  22. dr = cmd3.ExecuteReader();
  23. int t = 0;
  24. while (dr.Read())
  25. {
  26. occus_line[t] = dr["occu_pation"].ToString();
  27. t++;
  28. }
  29. connect.Close();
  30. int p = 0;
  31. double[] j = new double[Convert.ToInt32(tests_count)];
  32. string[] s = new string[Convert.ToInt32(tests_count)];
  33. chart2.Series[0].Points.Clear();
  34. //----------------------------------------------------------------------------------------------------------------------------------------
  35. for (int i = 0; i < occus_count; i++)
  36. {
  37. connect.Open();
  38. dr2 = cmd4.ExecuteReader();
  39. while (dr2.Read())
  40. {
  41. if (occus_line[i] == dr2["selected_occu"].ToString())
  42. {
  43. q[i] = q[i] + 1;
  44. }
  45. }
  46. connect.Close();
  47.  
  48. if (q[i] > 0)
  49. {
  50. MySqlCommand cmd5 = new MySqlCommand("SELECT * FROM occupation WHERE occu_id=" + "'" + (i + 1) + "'", connect);
  51. j[p] = (q[i] / tests_count);
  52. connect.Open();
  53. dr3 = cmd5.ExecuteReader();
  54. while (dr3.Read())
  55. {
  56. s[p] = dr3["occu_pation"].ToString();
  57. }
  58. chart2.Series[0].Points.AddXY(s[p] + " " + Math.Round(j[p]) + " %", Math.Round(j[p]));
  59. listBox1.Items.Add(s[p]);
  60. p++;
  61. connect.Close();
  62. }
  63. }
  64. //----------------------------------------------------------------------------------------------------------------------------------------
  65. }

Решение задачи: «При правильном подсчёте получаются значения равные 0»

textual
Листинг программы
  1. j[p] = (double)q[i] / tests_count;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут