Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 18

Substring. Индекс и длина должны указывать на позицию в строке

04.02.2013, 16:29. Показов 6367. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Так и не могу разобраться почему у меня выходит данная ошибка.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public string D(string str)
        {
                        string a, b, c; //String for the equation "ax2+bx+c=0"
                        int[] arr; // Array for "a,b,c"
                        arr = new int[3];
                        double[] DD;
                        DD = new double[4];
                        arr[0] = str.IndexOf("x"); //a
                        arr[1] = str.IndexOf("x",arr[0]+1); //b
                        arr[2] = str.IndexOf("=0"); //c
                        a = str.Substring(0, arr[0]); //Number a
                        b = str.Substring(arr[0] + 3, arr[1] - 5); //Number b
                        c = str.Substring(arr[1] + 2, arr[2] - 1); //Number c
                        double d = Convert.ToDouble(b);
                        d = System.Math.Pow(d, 2); //Squaring...                        
                        DD[0] = Convert.ToDouble(-d);
                        DD[1] = Convert.ToDouble(a);
                        DD[2] = Convert.ToDouble(c);
                        DD[3] = DD[0] + DD[1] + DD[2];
                        double D = System.Math.Sqrt(DD[3]); //Root of the discriminant
                        double x1 = -Convert.ToDouble(b) + D / (2 * Convert.ToDouble(a)); //Root of the equation №1
                        double x2 = -Convert.ToDouble(b) - D / (2 * Convert.ToDouble(a)); //Root of the equation №2
                        return Convert.ToString(x1) + "," + Convert.ToString(x2);
        }
C#
1
c = str.Substring(arr[1] + 2, arr[2] - 1); //Number c
Именно в этой строке она и выходит.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2013, 16:29
Ответы с готовыми решениями:

Substring. Индекс и длина должны указывать на позицию в строке
Почему ошибка? Как мне получить из строки абвгдеёжзийклмнопрс подстроку ноп public static void test() { ...

Индекс и длина должны указывать на позицию в строке. Имя параметра: length
Имеется такой вот метод: public string EncryptionShuffle(string text, int key) { string result = null; ...

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5 и так далее. Теперь...

6
 Аватар для Ivan Fantom
5 / 5 / 2
Регистрация: 12.10.2011
Сообщений: 75
04.02.2013, 18:07
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static string D(string str)
        {
            string a, b, c; //String for the equation "ax2+bx+c=0"
            int[] arr; // Array for "a,b,c"
            arr = new int[3];
            double[] DD;
            DD = new double[4];
            arr[0] = str.IndexOf("x"); //a
            arr[1] = str.IndexOf("x", arr[0] + 1); //b
            arr[2] = str.IndexOf("=0"); //c
            a = str.Substring(0, arr[0]); //Number a
            b = str.Substring(arr[0] + 3, arr[1] - arr[0] - 3); //Number b
            c = str.Substring(arr[1] + 2, arr[2] - arr[1] - 2); //Number c
            double d = Convert.ToDouble(b);
            d = System.Math.Pow(d, 2); //Squaring...                        
            DD[0] = Convert.ToDouble(-d);
            DD[1] = Convert.ToDouble(a);
            DD[2] = Convert.ToDouble(c);
            DD[3] = DD[0] + DD[1] + DD[2];
            double D = System.Math.Sqrt(DD[3]); //Root of the discriminant
            double x1 = -Convert.ToDouble(b) + D / (2 * Convert.ToDouble(a)); //Root of the equation №1
            double x2 = -Convert.ToDouble(b) - D / (2 * Convert.ToDouble(a)); //Root of the equation №2
            return Convert.ToString(x1) + "," + Convert.ToString(x2);
        }
0
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 18
04.02.2013, 18:39  [ТС]
Но теперь возвращает значение NaN, как это исправить?
0
 Аватар для Ivan Fantom
5 / 5 / 2
Регистрация: 12.10.2011
Сообщений: 75
04.02.2013, 20:10
дискриминант зависит от коэффициентов: a, b, c. Он может выйти и отрицательным, поэтому корень от отрицательного числа даст NaN. Тогда уравнение не имеет корней в действительной области. Т.е. корни такого уравнения выйдут комплексными, но это уже несколько другой разговор. Ты можешь просто обработать это исключением любым удобным для тебя способом.
1
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 18
04.02.2013, 20:35  [ТС]
Специально достал задачник за 8 класс и поискал задания, с 10 раза не могли же попадаться одни квадратные уравнения без корней
0
 Аватар для Ivan Fantom
5 / 5 / 2
Регистрация: 12.10.2011
Сообщений: 75
04.02.2013, 23:18
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static string D(string str)
        {
            double a, b, c;     //String for the equation "ax2+bx+c=0"
            int[] arr;          // Array for "a,b,c"
            arr = new int[3];
            arr[0] = str.IndexOf("x");              //a
            arr[1] = str.IndexOf("x", arr[0] + 1);  //b
            arr[2] = str.IndexOf("=0");             //c
            a = Convert.ToDouble(str.Substring(0, arr[0])); //Number a
            b = Convert.ToDouble(str.Substring(arr[0] + 2, arr[1] - arr[0] - 2));   //Number b
            c = Convert.ToDouble(str.Substring(arr[1] + 1, arr[2] - arr[1] - 1));   //Number c
            double D = System.Math.Sqrt(b * b - 4 * a * c);                         //Root of the discriminant
            double x1 = (-b + D) / (2 * a);   //Root of the equation №1
            double x2 = (-b - D) / (2 * a);   //Root of the equation №2
            return Convert.ToString(x1) + "," + Convert.ToString(x2);
        }
Вот вариант получше.

Добавлено через 46 секунд
Исправленный и доработанный.
1
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 18
04.02.2013, 23:31  [ТС]
Да и у меня всё правильно было, однако с формулой напутал А так спасибо за всё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2013, 23:31
Помогаю со студенческими работами здесь

"Индекс находился вне границ массива" при использовании Substring()
div.Id.Length=12 Тогда почему div.Id.Substring(4) выдает ошибку?

Некорректная работа SubString - в строке лишний символ
Уважаемые, здравствуйте! Никак не пойму что за беда с SubString. Код: AnsiString Str=":nii"; ...

Длина пятого и длина последнего слова в строке
Как определить длину пятого слова в строке и длину последнего слова в строке.

Каковы должны быть размеры участка, чтобы длина забора была наименьшей?
Одна сторона прямоугольного участка земли примыкает к берегу канала, а три другие огораживаются забором. Каковы должны быть размеры этого...

Printf запись символа на определенную позицию или длина выводимой строки
Есть строка, надо место, что осталось, заполнить пробелами, а на 150 например место записать |. Как это сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru