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

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


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

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

15   голосов , оценка 4.133 из 5
Похожие ответы