Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2014, 02:40   #1
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию Индекс находился вне границ массива

Такая проблема - выскакивает месседж о том, что индекс находился вне границ массива, как только дело доходит до добавления колонок в первом цикле. Написал две проги, одинаковые, с одним отличием, что одна из них имеет модальное окно и часть компонентов в отличие от первой проги перенесены на это самое окно. Но прога однооконная работает как нужено, что не скажешь о второй, хотя основной код прописан так же.

По заданию данные (числа, построчно, 24 числа) заносятся в таблицу(колонка "объем"), в которой 5 столбцов: год (2009 и 2010), месяц, объем, цена, доход.

Многооконная:
Код:
using System...;

namespace KURS
{
    public partial class Chart : Form
    {
        public Chart()
        {
            InitializeComponent();
            createGistTable();
        }        

        Form1 f1 = new Form1();

        private void Chart_Load(object sender, EventArgs e)
        {
            tabPage1.Text = "Гистограмма";
            tabPage2.Text = "Таблица";

            createGistTable();
        }

        void createGistTable()
        {
            double price_2009 = 1.1;
            double price_2010 = 1.5;

            string[] mass_year_2009 = { "2009", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };
            string[] mass_year_2010 = { "2010", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };

            int[] mass_month = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

            // Массив чисел из textBox            
            double[] mass_mount = f1.textBox1.Lines.Where(s => !string.IsNullOrWhiteSpace(s)).Select(n => double.Parse(n)).ToArray();
                        
            // Расчет дохода с учетом варианта согласно условию, далее конвертация результатов в массив
            double[] mass_income_09 = mass_mount.Select(i => (((i * 4) / 5) * price_2009)).ToArray();
            double[] mass_income_10 = mass_mount.Select(i => (((i * 4) / 5) * price_2010)).ToArray();
                                       
            // 2009
            for (int n = 0; n < 12; n++)
            {                
                dataGridView1.Rows.Add(mass_year_2009[n], mass_month[n], mass_mount[n], price_2009, mass_income_09[n]);
            }        
        
            // 2010
            for (int n = 0; n < 12; n++)                
            {
                dataGridView1.Rows.Add(mass_year_2010[n], mass_month[n], mass_mount[n], price_2010, mass_income_10[n]);
            }
        }
    }
}

Однооконная:
Код:
using System...;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();            
        }        

        double price_2009 = 1.1;
        double price_2010 = 1.5;

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        // GO
        private void button1_Click(object sender, EventArgs e)
        {
            string[] mass_year_2009 = { "2009", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };
            string[] mass_year_2010 = { "2010", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };

            int[] mass_month = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

            // Массив чисел из textBox
            double[] mass_mount = textBox1.Lines.Where(s => !string.IsNullOrWhiteSpace(s)).Select(n => double.Parse(n)).ToArray();

            // Расчет дохода с учетом варианта согласно условию
            double[] mass_income_09 = mass_mount.Select(i => (((i * 4) / 5) * price_2009)).ToArray();
            double[] mass_income_10 = mass_mount.Select(i => (((i * 4) / 5) * price_2010)).ToArray();

            for (int n = 0; n < 12; n++)
            {                   
                dataGridView1.Rows.Add(mass_year_2009[n], mass_month[n], mass_mount[n], price_2009, mass_income_09[n]);

                chart1.Series[0].Points.AddY(mass_income_09[n]);
                chart1.Series[1].Points.AddY(mass_income_09[n]);
                chart1.Series[2].Points.AddY(mass_income_09[n]);

                chart1.Series[3].Points.AddY(mass_income_10[n]);
                chart1.Series[4].Points.AddY(mass_income_10[n]);
                chart1.Series[5].Points.AddY(mass_income_10[n]);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {            
        
        }

        private void button3_Click(object sender, EventArgs e)
        {
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Filter = "TXT|*.txt";

            if (OFD.ShowDialog() == DialogResult.OK)
            {
                StreamReader SR = new StreamReader(OFD.FileName);
                textBox1.Text = SR.ReadToEnd();
                SR.Close();
            }
        }
    }
}
Проблема с занесением данных из textBox1 в таблицу, а так же и с занесением массива доходов. Но я так понимаю, если решу первую ошибку, то вторая сама собой решится.
Вложения
Тип файла: rar 01.rar (118.4 Кб, 6 просмотров)
Тип файла: rar 02.rar (51.8 Кб, 6 просмотров)

Последний раз редактировалось Pikovaya_dama; 26.11.2014 в 02:48.
Pikovaya_dama вне форума Ответить с цитированием
Старый 26.11.2014, 17:18   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

mass_mount.Length >= 12 ?
dampirik вне форума Ответить с цитированием
Старый 28.11.2014, 17:37   #3
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
mass_mount.Length >= 12 ?
Массив, вроде как, равен нулю. Но почему?

Последний раз редактировалось Pikovaya_dama; 28.11.2014 в 19:16.
Pikovaya_dama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Индекс находился вне границ массива Pikovaya_dama C# (си шарп) 14 02.12.2014 17:13
Индекс находился вне границ массива. Maks3 C# (си шарп) 3 23.11.2014 21:54
Ошибка: Индекс находился вне границ массива archi-boy C# (си шарп) 11 15.11.2013 12:45
Индекс находился вне границ массива. banan4ik Помощь студентам 1 30.05.2013 02:25
[C#] Индекс находился вне границ массива JonMagon Помощь студентам 12 22.01.2012 23:06