Структура. Выводятся не все значения (фамилии), а только одно - 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 });
}