Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аппроксимирование данных 
:(
    Опции темы
HelgaZaharova
Дата 30.5.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Здрямс! 
У меня такая проблема.  в приложении, на вебю странице есть два контрола - раскрывающиеся списки. Выбирая значения из одного  проводим аппрокмимацию, после выбираем значения из другого контрола - рассчитываем нужную величину. Аппроксимацию проводим по табличнм занчениям с помощью стороннего файла.
метод для передачи переменных в файл leastsquares.cs (там и происходят аппроксимация и рассчет значение) следующий :
Код

        private double[] x = new double[3];
        private double[] y = new double[3];
        private double[] w = { 1, 1, 1 };
        private double a = 7.5;
        private double b = 12;
        private int n = 3;
        private int m = 3;
        private double[] ctbl;
        private double cut;
        private double otv;

_____________________________________________________
 private void Connect()
        {
            dAdapt = new OleDbDataAdapter(_conn, cn);
            cb = new OleDbCommandBuilder(dAdapt);
            dAdapt.Fill(ds, tabl_name);
            DataTable tabl = ds.Tables[tabl_name];
            for (int k = 0; k <= tabl.Rows.Count; k++)
            {
                x[k] = Convert.ToDouble(tabl.Rows[k][0].ToString());
            }

            for (int k = 0; k < tabl.Rows.Count; k++)
            {
                y[k] = Convert.ToDouble(tabl.Rows[k][1].ToString());
            }
            bd.leastsquares.leastsquares.buildchebyshevleastsquares(ref x, ref y, ref w, a, b, n, m, ref ctbl);
        }


Проблема состоит в том, что именно этот метод выдает ошибку, что "Индекс находился вне границ массива."
как можно это исправить?

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  leastsquares_1_.csharp.zip 65,26 Kb
PM MAIL   Вверх
DVariuS
Дата 30.5.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: нет
Всего: 8



HelgaZaharova, я думаю, что проблема в 19-й строке. Замени ее на
Код

for (int k = 0; k < tabl.Rows.Count; k++)


А вообще отладчик показывает, в каком месте произошла генерация исключения - от этого и надо отталкиваться  smile 
PM MAIL   Вверх
HelgaZaharova
Дата 30.5.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Цитата(DVariuS @ 30.5.2009,  11:56)
я думаю, что проблема в 19-й строке. 

А вообще отладчик показывает, в каком месте произошла генерация исключения - от этого и надо отталкиваться  smile

изначально эта строка выглядела так, это ничего не поменяло. А генерация исключения происходт в 21 строке.
PM MAIL   Вверх
DVariuS
Дата 30.5.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: нет
Всего: 8



Цитата(HelgaZaharova @ 30.5.2009,  12:15)
Цитата(DVariuS @ 30.5.2009,  11:56)
я думаю, что проблема в 19-й строке. 

А вообще отладчик показывает, в каком месте произошла генерация исключения - от этого и надо отталкиваться  smile

изначально эта строка выглядела так, это ничего не поменяло. А генерация исключения происходт в 21 строке.

Правильно, в 21-й:
Код

       x[k] = Convert.ToDouble(tabl.Rows[k][0].ToString());
  тут----^                    или тут----^

Сколько у тебя строк в таблице до входа в цикл? Больше 3-х? 
В любом случае вот это
Код

tabl.Rows[k][0].ToString()

будет выдавать ошибку пока ты не исправишь 19-ю строку
Код

for (int k = 0; k <= tabl.Rows.Count; k++)
       тут--------^

Т.к строк у тебя в таблице, допустим, 3, а обращение в 21 строке кода идет к 4-й по счету строке таблицы, что и вызывает исключение "Индекс находился вне границ массива."

Это сообщение отредактировал(а) DVariuS - 30.5.2009, 12:44
PM MAIL   Вверх
HelgaZaharova
Дата 30.5.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Вроде, больше нет ошибки)) спасибо большое))

P.S. Ошибка все равно выдается - та же самая, но все равно спасибо

Это сообщение отредактировал(а) HelgaZaharova - 30.5.2009, 13:11
PM MAIL   Вверх
DVariuS
Дата 30.5.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: нет
Всего: 8



HelgaZaharova, посмотри отладчиком, какое значение имеет tabl.Rows.Count в момент генерации исключения. Скорее всего значение периодически превышает 3 - тогда понятно в чем дело. smile 

Это сообщение отредактировал(а) DVariuS - 30.5.2009, 17:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.