Структура. Выводятся не все значения (фамилии), а только одно - C#
Формулировка задачи:
Здравствуйте. Взял у друга программу на переделку под свое условие: "Среди работников данного предприятия распечатать список тех, чья з\п за месяц ниже средней. С указанием их фамилии, з\п и стажа работы." Но у меня возникла проблема - выводит не все значения (фамилии), а только одно. И перед этим единственным значение несколько пустых строк выводит. Кто-нибудь может подсказать что не так? Вот код. Кнопка вывода "button3".
namespace Лаб_1_С_sharp_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.ColumnCount = 4; dataGridView2.ColumnCount = 3; dataGridView1.Columns[0].HeaderText = dataGridView2.Columns[0].HeaderText = "Ф.И.О."; dataGridView1.Columns[1].HeaderText = "Дата рождения"; dataGridView1.Columns[2].HeaderText = dataGridView2.Columns[1].HeaderText = "Зарплата"; dataGridView1.Columns[3].HeaderText = dataGridView2.Columns[2].HeaderText = "Стаж"; } public struct kg { public string fio; public string den; public string zar; public string st; } kg[] kga = new kg[50]; int n = 0; private void button1_Click(object sender, EventArgs e) { System.IO.StreamReader f = new System.IO.StreamReader("rabota.txt", Encoding.Default); dataGridView1.Rows.Clear(); for (n = 0; !f.EndOfStream; n++) { string[] temp = f.ReadLine().Split(' '); kga[n].fio = temp[0]; kga[n].den = temp[1]; kga[n].zar = temp[2]; kga[n].st = temp[3]; dataGridView1.Rows.Add(kga[n].fio, kga[n].den, kga[n].zar, kga[n].st); } f.Close(); } private void button3_Click(object sender, EventArgs e) { String s1, s2, s3; int k,i; double s=0;// суммма залплат всех double sz; //средняя зарплата dataGridView2.Rows.Clear(); k = 0; sz = Convert.ToDouble(Microsoft.VisualBasic.Interaction.InputBox("Введите среднюю зарплату)", "Ввод данных", "19000", this.Left, this.Top)); for (i = 0; i < n; i++) { s = s + Convert.ToDouble(kga[i].zar); } // sz = s / n; label1.Text = Convert.ToString(sz); for (i = 0; i < n; i++) { if(Convert.ToDouble(kga[i].zar)<sz) { dataGridView2.Rows[k].Cells[1].Value = kga[i].zar; dataGridView2.Rows[k].Cells[0].Value = kga[i].fio; dataGridView2.Rows[k].Cells[2].Value = kga[i].st; dataGridView2.Rows.Add(); k = k + 1; } } } private void button2_Click(object sender, EventArgs e) { dataGridView1.Rows.Clear(); int m = Convert.ToInt32( Microsoft.VisualBasic.Interaction.InputBox("Введите количество записей", "Ввод данных", "3", this.Left, this.Top)); for(n=0;n<m;n++) { kga[n].fio = Microsoft.VisualBasic.Interaction.InputBox("Введите Ф.И.О. рабочего", "Ввод данных", "Андреев А. Е. ", this.Left, this.Top); kga[n].den = Microsoft.VisualBasic.Interaction.InputBox("Введите дату рождения (ДД.ММ.ГГГГ)", "Ввод данных", "28.11.1991", this.Left, this.Top); kga[n].zar = Microsoft.VisualBasic.Interaction.InputBox("Введите зарплату", "Ввод данных", "20000", this.Left, this.Top); kga[n].st = Microsoft.VisualBasic.Interaction.InputBox("Введите стаж работы (лет) ", "Ввод данных", "1", this.Left, this.Top); dataGridView1.Rows.Add(kga[n].fio, kga[n].den, kga[n].zar, kga[n].st); } }
Решение задачи: «Структура. Выводятся не все значения (фамилии), а только одно»
textual
Листинг программы
private void button3_Click(object sender, EventArgs e) { dataGridView2.Rows.Clear(); double sz = 0; //средняя зарплата for (int i = 0; i < n ; i++) sz += Convert.ToDouble(kga[i].zar); sz = (double)sz / n; label1.Text = Convert.ToString(sz); for (int i = 0; i < n; i++) if (Convert.ToDouble(kga[i].zar) < sz) dataGridView2.Rows.Add(new string[] { kga[i].fio, kga[i].zar, kga[i].st }); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д