Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 5
1

Индекс выходит за пределы массива

21.11.2015, 23:08. Показов 4725. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие задачи:
Сформировать целочисленный массив A(75), элементами которого являются
случайные числа из диапазона [-5, 20]. Найти среди его элементов два, разность
которых имеет наибольшее значение.

Моё решение:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int[] a = new int[75];
 
            Random rnd = new Random();
            for (int i = 0; i < 75; i++)
            {
                a[i] = rnd.Next(-6, 21);
            }
 
            int max = Math.Abs(a[0] - a[1]);
            for (int i = 0; i < 75; i++)
            {
                for (int j = 0; j < 75; i++)
                {
                    if ((Math.Abs((a[i] - a[j])) > max) & (i != j))
                        max = Math.Abs(a[i] - a[j]);
                }
            }
            Console.WriteLine("Максимальная разность = " + max);
            Console.ReadKey();
Студия говорит, что индекс выходит за пределы массива в условии во втором цикле, а я не могу понять что не так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2015, 23:08
Ответы с готовыми решениями:

Нужна проверка на то что не индекс выходит за пределы длины массива
Привет всем. Вопрос по этике написания кода Сразу извиняюсь за возможный идиотизм вопроса. И он...

Parallel.For выходит за пределы массива
Всем привет. необходимо реализовать умножение матриц. Написал следующий фрагмент кода ...

Значение выходит за пределы границ массива
Добрый вечер форумчанам. Нужно посчитать кол-во единиц в строках и столбцах (а затем выбрать...

Индекс выходит за границы массива
Исключение возникает в последней строчке. Индекс выходит за границы массива. // Класс...

8
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
21.11.2015, 23:16 2
Цитата Сообщение от artyom_mel Посмотреть сообщение
C#
1
for (int j = 0; j < 75; i++)
исправьте на:
C#
1
for (int j = 0; j < 75; j++)
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
21.11.2015, 23:21 3
12 строка
C#
1
for (int j = 0; j < 75; i++)
скорее всего надо
C#
1
for (int j = 0; j < 75; j++)

Не по теме:

ну, 2 ответа лучше, чем ни одного)

0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 5
22.11.2015, 00:08  [ТС] 4
Ой, спасибо, не заметил, что не исправил i на j.
Но теперь другая проблема, программа почему-то всегда выводит 26 в ответе.
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
22.11.2015, 00:44 5
Цитата Сообщение от artyom_mel Посмотреть сообщение
программа почему-то всегда выводит 26 в ответе.
Запустите ее раз 20, возможно повезет и программа выдаст 25 или 24 или другое значение, близкое к максимально возможной разнице.
Если сделать массив не на 75, а на 20 элементов, то ответы точно будут отличаться.
0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 5
22.11.2015, 14:16  [ТС] 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
           Console.Write("Введите кол-во студентов: ");
            int n = int.Parse(Console.ReadLine());
 
            int[] rez = new int[n];
 
            for (int i = 1; i <= n ; i++)
            {
                Console.Write("Введите оценку студента номер " + i + ": ");
                rez[i] = int.Parse(Console.ReadLine());
            }
 
            int sum = 0;
            for (int i = 1; i <= n; i++)
            {
                sum += rez[i];
            }
 
            int sr = sum / n;
 
            Console.WriteLine("Средний балл сдачи экзамена: " + sr);
            Console.ReadKey();
Когда ввел все оценки - дальше ничего не происходит и студия пишет, что опять индекс за пределы массива вышел (9 строка). Что здесь не так-то?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.11.2015, 14:20 7
Цитата Сообщение от artyom_mel Посмотреть сообщение
for (int i = 1; i <= n ; i++)
Как минимум то, что = тут в условии быть не должно. i<n
0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 5
22.11.2015, 14:24  [ТС] 8
Нет, это как раз верно, так у меня на один меньше получится студентов
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
22.11.2015, 14:34 9
Ну понятно, что на 1 меньше, вы же счет начинаете не с 0ого элемента, а с 1ого. int i = 0 тогда.
0
22.11.2015, 14:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2015, 14:34
Помогаю со студенческими работами здесь

Индекс выходит за границы массива
Взял из из простор интернета функцию сохранения в .txt документ текстбоксов, но возникла проблема с...

Индекс выходит за границу массива
static int Cols (double Arr, out int rows) { int n = Arr.GetLength(0); ...

Алгоритм Хаффмана.Индекс вышел за пределы массива
Добрый вечер! Возникла проблем,писал алгоритм Хаффмана по методичкам и при работе выдаёт...

Индекс выходит за пределы массива
Код в классе class New { public static int n; public static int a; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru