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

Замена чисел в двумерном массиве

13.05.2020, 16:35. Показов 3253. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, столкнулся с проблемой. Мне нужно сгенерировать целочисленную матрицу, размерность определяет пользователь(отдельный метод), вывести ее тоже отдельным методом и в еще одном методе заменить все числа кратные 4 на 0.
Я всё сделал, но при замене чисел кратных на 4 в цикле, у меня пишет, что индексы находятся за пределом диапазона, что не так?

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
    class Program
    {
        static Random rnd = new Random();
        static int[,] Matrix(int size)
        {
            int[,] matrix = new int[size,size];
            for(int i =0; i < size; i++)
            {
                for(int j = 0; j < size; j++)
                {
                    matrix[i, j] = rnd.Next(-100, 100);
                }
            }
            return matrix;
        }
 
        static void PrintNumberArray(int[,] matrix)
        {
            int rows = matrix.GetUpperBound(0) + 1;
            int columns = matrix.Length / rows;
 
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    Console.Write($"{matrix[i, j]} \t");
                }
                Console.WriteLine();
 
            }
        }
 
        static int[,] RemovalOfMultiplesOfFour(int[,] matrix)
        {
            for (int i = 0; i < matrix.Length; i++)
            {
                for (int j = 0; j < matrix.Length; j++)
                {
                    if (matrix[i,j] % 4 == 0)
                    {
                        matrix[i, j] = 0;
                    } 
                }
            }
            return matrix;
        }
        static void Main(string[] args)
        {
            Console.Write("Введите положительное число меньше 7: ");
            int size = int.Parse(Console.ReadLine());
 
            if (size <= 0 && size > 7)
            {
                Console.WriteLine("Ошибка! Введены невалидные данные!");
                Console.ReadKey();
                return;
            }
 
            int[,] matrix = Matrix(size);
 
            Matrix(size);
            PrintNumberArray(matrix);
 
            RemovalOfMultiplesOfFour(matrix);
            PrintNumberArray(matrix);
 
            Console.ReadKey();
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2020, 16:35
Ответы с готовыми решениями:

Замена символов в двумерном символьном массиве
Есть такое задание В двумерном массиве записаны слова, представляющие собой последовательность...

Замена симметричных элементов в двумерном массиве
Задача: Дан двумерный массив размером 5 * 8, заполненный случайным образом. Заменить все...

Генерация вещественных чисел в двумерном массиве
Здравствуйте.У меня есть двумерный массив из 3х3. Как рандомно можно заполнить его вещественными...

Определить, есть ли четные числа в двумерном массиве целых чисел
Пользователем вводится двумерный массив целых чисел. Определить, есть ли там четные числа.

5
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 19:45 2
C#
1
2
3
4
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                for (int j = 0; j < matrix.GetLength(1); j++)
                {
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 11
13.05.2020, 19:53  [ТС] 3
Спасибо большое! А не подскажете, почему изначально не работало?
0
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 20:15 4
Предположим, у вас матрица 4x5. Свойство Length вернёт количество элементов - 20. Когда Вы обращаетесь по циклу к элементу под номером, допустим [4,0], Вы получаете исключение IndexOutOfRangeException, т.е. обращение к несуществующему элементу лежащему вне диапазона массива. Так как массивы в C# начинаются от 0, в данном варианте Вам доступны строки от 0 до 3х включая, и столбцы от 0 до 4х включая.

Метод GetLength(0) - возвращает количество строк матрицы, GetLength(1) - соответственно, количество столбцов матрицы.
0
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 11
13.05.2020, 20:43  [ТС] 5
Это только с многомерными массивами так получается?
Что может выскочить исключение и надо использовать GetLenght?
0
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 21:10 6
Цитата Сообщение от SelskiyDevelop Посмотреть сообщение
Это только с многомерными массивами так получается?
Нет, это может произойти с любым объектом, класс которого реализует индексаторы: одномерные, двумерные массивы, списки, строки, и прочие.

Цитата Сообщение от SelskiyDevelop Посмотреть сообщение
Что может выскочить исключение и надо использовать GetLenght?
Для квадратной матрицы - да. У других типов это могут быть другие свойства/методы. У строк и массивов это Length, у списков это Count, есть метод расширения Count() для некоторых типов.
0
13.05.2020, 21:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2020, 21:10
Помогаю со студенческими работами здесь

Замена столбцов в двумерном массиве
Здравствуйте помогите пожалуйста доделать программу задача такова, столбцы массива должны менять...

Поиск чисел в двумерном массиве
Помогите вот с чем: Нужно найти максимальное число в массиве и поменять его местами с нечетным. ...

Замена и обнуление в двумерном массиве.
Здравствуйте решите пожалуйста задачу:В двумерных массивах A и В числа в столбцах левого и правого...

Не происходит замена в двумерном массиве
Не могу произвести замену цифр,с 0 1 2 на a b c; Подскажите в чем ошибка? #include &quot;stdafx.h&quot;...

Замена элементов в двумерном массиве
В общем, всем здравствуйте. Проблема такая - написал код, который должен заменять элементами из...

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


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

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