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

Сравнить строчки матрицы между собой

29.03.2020, 23:10. Показов 3783. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, вот у меня есть матрица 3*3 и мне нужно выбрать третью строчку и сравнить ее суммы чисел с другими строчками. Код формирования матрицы есть, а вот сам цикл проверки не могу придумать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2020, 23:10
Ответы с готовыми решениями:

Сравнить строки из файла между собой
Хорошего всем настроения. Есть файл с некоторым количеством строк Нужно сравнить строки между собой, найти повторяющиеся и посчитать...

Как сравнить две даты между собой?
Есть структура типа: struct date { unsigned int day, month, year; } Как сравнить две такие даты между собой?

Сравнить все элементы в массиве между собой
Даны 3 массива. Для каждого массива вывести индексы тех элементов, значения которых имеют разные знаки. Немного не понимаю суть самого...

25
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
29.03.2020, 23:41
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
int[,] mass = new int[3, 3];
Random rm = new Random();
for (int i = 0; i < 3; i++)
    for (int i1 = 0; i1 < 3; i1++)
        mass[i, i1] = rm.Next(0, 100);
int[] arr = new int[3];
for (int i = 0; i < 3; i++)
    for (int i1 = 0; i1 < 3; i1++)
        arr[i] += mass[i, i1];
if (arr[2] == arr[1])
    Console.WriteLine("Сумма чисел третьей строки равна сумме чисел второй");
else
{
    if (arr[2] > arr[1])
        Console.WriteLine("Сумма чисел третьей строки больше суммы чисел второй");
    else
        Console.WriteLine("Сумма чисел третьей строки меньше суммы чисел второй");
}
if (arr[2] == arr[0])
    Console.WriteLine("Сумма чисел третьей строки равна сумме чисел первой");
else
{
    if (arr[2] > arr[0])
        Console.WriteLine("Сумма чисел третьей строки больше суммы чисел первой");
    else
        Console.WriteLine("Сумма чисел третьей строки меньше суммы чисел первой");
}
Console.Read();
1
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
29.03.2020, 23:43
Дополнительными массивами можно пользоваться? Если да, то заводите одномерный массив размером с количеством строк матрицы, и кладёте туда сумму этих строк. Вот Вам пример:
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
    // Заполняем
    Random rnd = new Random();
    int[,] matrix = new int[3, 3];
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            matrix[i, j] = rnd.Next(0, 100);
        }
    }
    
    // Выводим
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            Console.Write(matrix[i, j] + " ");
        }
        Console.WriteLine();
    }
    
    // Считаем сумму строки
    int[] massive = new int[matrix.GetLength(0)];
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            massive[i] += matrix[i, j];
        }
    }
    
    // Выводим суммы строк
    Console.WriteLine(string.Join(" ", massive));
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 11:59  [ТС]
Спасибо большое за помощь, а вот если мне нужно , чтобы пользователь выбрал строчку и ее сравнить с другими двумя . Как код нужно переделать
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.03.2020, 12:44
Можно сделать что-то подобное. Плюс, добавить проверку если сумма строк равна и вывод если введённое пользователем число не корректно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Console.Write("Первая сравниваемая строка: ");
    if (int.TryParse(Console.ReadLine(), out int firstNumberCompare) &&
        firstNumberCompare > -1 &&
        firstNumberCompare < massive.Length)
    {
        Console.Write("Вторая сравниваемая строка: ");
        if (int.TryParse(Console.ReadLine(), out int secondNumberCompare) &&
            secondNumberCompare > -1 &&
            secondNumberCompare < massive.Length &&
            secondNumberCompare != firstNumberCompare)
        {
            // Здесь логика сравнивания
            Console.WriteLine(massive[firstNumberCompare] > massive[secondNumberCompare] ? "Первая больше второй" : "Первая меньше второй");
        }
    }
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 14:08  [ТС]
Спасибо большое
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
30.03.2020, 14:18
Вариант:
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
int[,] mass = new int[3, 3];
Random rm = new Random();
Console.WriteLine("Исходная матица:");
for (int i = 0; i < 3; i++)
{
    for (int i1 = 0; i1 < 3; i1++)
    {
        mass[i, i1] = rm.Next(0, 100);
        Console.Write(" " + mass[i, i1]);
    }
    Console.WriteLine();
}
int[] arr = new int[3];
for (int i = 0; i < 3; i++)
    for (int i1 = 0; i1 < 3; i1++)
        arr[i] += mass[i, i1];
Console.Write("Введите номер строки: ");
int num = int.Parse(Console.ReadLine()) - 1;
int res = -2;
for(int i = 0; i < 3; i++)
{
    if(i != num)
    {
        res = arr[num].CompareTo(arr[i]);
        switch(res)
        {
            case -1:
                Console.WriteLine("Сумма чисел {0} строки меньше суммы чисел {1}", num + 1, i + 1);
                break;
            case 0:
                Console.WriteLine("Сумма чисел {0} строки равна сумме чисел {1}", num + 1, i + 1);
                break;
            case 1:
                Console.WriteLine("Сумма чисел {0} строки больше суммы чисел {1}", num + 1, i + 1);
                break;
        }
    }
}
Console.Read();
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 14:28  [ТС]
C#
1
2
3
4
5
6
7
8
9
// Считаем сумму строки
        int[] massive = new int[matrix.GetLength(0)];
        for (int i = 0; i < matrix.GetLength(0); i++)
        {
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                massive[i] = massive[i]+ matrix[i, j];
            }
        }
А не подскажите почему при замене знака "+" на "умножение" результат 0 0 ?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.03.2020, 14:44
DrunkDog, потому что при создании массива, его элементы инициализируются нолями. А что на ноль не умножай - результат будет ноль. Поэтому, если Вы ходите получать произведение строки - инициалируйте массив единицами.
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
30.03.2020, 15:08
Цитата Сообщение от DrunkDog
Здравствуйте, вы мне отправили этот код : А как сделать , чтобы вместо сложение было умножение
Во-первых, уберите 0 в рандоме (8 строка):
C#
1
mass[i, i1] = rm.Next(1, 100);
Во-вторых, замените += на *= (16 строка):
C#
1
arr[i] *= mass[i, i1];
В-третьих, как вам сказали, инициируйте массив единицами (13 строка):
C#
1
int[] arr = new int[] { 1, 1, 1};
Ну и в-четвертых, замените слова "сумма" на "произведение" в печати (28, 31, 34 строки).
В-пятых, в личку не пишите - пишите в тему, с обращением по нику.
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 15:08  [ТС]
Понял,спасибо
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
30.03.2020, 15:10
Цитата Сообщение от DrunkDog Посмотреть сообщение
А как единицами инициализировать?
Вот так:
Цитата Сообщение от chumich Посмотреть сообщение
В-третьих, как вам сказали, инициируйте массив единицами (13 строка):
int[] arr = new int[] { 1, 1, 1};
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 15:24  [ТС]
chumich, у меня получился такой код , он работает для массива 3 на 3, а если у меня пользователь вводит размерность массива. Как тогда инициализировать массив 1
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
        int n, m;
        n = Convert.ToInt32(Console.ReadLine());
        m = Convert.ToInt32(Console.ReadLine());
        int[,] mass = new int[n, m];
        Random rm = new Random();
        Console.WriteLine("Исходная матрица:");
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                mass[i, j] = rm.Next(2, 10);
                Console.Write(" " + mass[i, j]);
            }
            Console.WriteLine();
        }
        int[] arr = new int[] {1,1,1 };
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                arr[i] *= mass[i, j];
        Console.Write("Введите номер строки: ");
        int num = int.Parse(Console.ReadLine()) - 1;
        int res = -2;
        for (int i = 0; i < n; i++)
        {
            if (i != num)
            {
                res = arr[num].CompareTo(arr[i]);
                switch (res)
                {
                    case -1:
                        Console.WriteLine("Произведение чисел {0} строки меньше произведения чисел {1}", num + 1, i + 1);
                        break;
                    case 0:
                        Console.WriteLine("Произведение чисел {0} строки равна произведения чисел {1}", num + 1, i + 1);
                        break;
                    case 1:
                        Console.WriteLine("Произведение чисел {0} строки больше произведения чисел {1}", num + 1, i + 1);
                        break;
                }
            }
        }
        Console.Read();
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.03.2020, 15:55
C#
1
2
3
4
for (int i = 0; i < matrix.GetLength(0); i++)
{
    massive[i] = 1;
}
1
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
30.03.2020, 16:00  [ТС]
А если надо будет перемножить строчки между собой какую часть кода надо будет поменять? Вот эту?

C#
1
2
3
4
int[] arr = new int[] {1,1,1 };
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                arr[i] *= mass[i, j];
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
30.03.2020, 16:07
Инициализация:
C#
1
2
3
4
5
int[] arr = new int[n];
for (int i = 0; i < n; i++)
{
    arr[i] = 1;
}
Добавлено через 5 минут
Перемножение вместе с инициализацией.
C#
1
2
3
4
5
6
7
8
int[] arr = new int[n];
for (int j = 0; j < m; j++)
{
    arr[j] = 1;
}
for (int j = 0; j < m; j++)
    for (int i = 0; i < n; i++)
        arr[j] *= mass[i, j];
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.03.2020, 16:24
DrunkDog, Вы имеете ввиду получить произведение произведения строк матрицы (я не специально так запутал )? Если это то что Вам нужно, то нужно будет завести, например, отдельную переменную, производя с ней умножение строк:
C#
1
2
3
4
5
    int massiveMult = 1;
    for (int i = 0; i < massive.Length; i++)
    {
        massiveMult *= massive[i];
    }
0
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
01.04.2020, 14:08  [ТС]
chumich,Здравствуйте, подскажите пожалуйста как вывести результат сравнения в числах?
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
  int n, m;
        n = Convert.ToInt32(Console.ReadLine());
        m = Convert.ToInt32(Console.ReadLine());
        int[,] mass = new int[n, m];
        Random rm = new Random();
        Console.WriteLine("Исходная матрица:");
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                mass[i, j] = rm.Next(2, 10);
                Console.Write(" " + mass[i, j]);
            }
            Console.WriteLine();
        }
        int[] arr = new int[n];
        for (int j = 0; j < m; j++)
        {
            arr[j] = 1;
        }
        for (int j = 0; j < m; j++)
            for (int i = 0; i < n; i++)
                arr[j] *= mass[i, j];
        Console.Write("Введите номер строки: ");
        int num = int.Parse(Console.ReadLine())-1;
        int res=-2 ;
        for (int i = 0; i < n; i++)
        {
            if (i != num)
            {
                res = arr[num].CompareTo(arr[i]);
                switch (res)
                {
                    case -1:
                        Console.WriteLine("Произведение чисел {0} строки меньше произведения чисел {1}", res);//num+1 , i+1 );
                        break;
                    case 0:
                        Console.WriteLine("Произведение чисел {0} строки равна произведения чисел {1}", res);//num+1 , i+1 );
                        break;
                    case 1:
                        Console.WriteLine("Произведение чисел {0} строки больше произведения чисел {1}", res);//num+1 , i+1 );
                        break;
                }
            }
        }
        Console.Read();
    }
}
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
01.04.2020, 14:31
Цитата Сообщение от DrunkDog Посмотреть сообщение
Console.WriteLine("Произведение чисел {0} строки меньше произведения чисел {1}", res)
Это не будет работать.
Цитата Сообщение от DrunkDog Посмотреть сообщение
как вывести результат сравнения в числах
На сколько больше или как? Или значения в виде неравенств?
0
0 / 0 / 0
Регистрация: 04.11.2019
Сообщений: 55
01.04.2020, 15:56  [ТС]
chumich, у меня просто задание было, выбрать определенную строчку и сравнить на ортогональность.А для этого нужно выбранную строчку умножить на другую и если результат умножения 0, то она ортогональна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2020, 15:56
Помогаю со студенческими работами здесь

Сравнить элементы ассоциативного массива между собой
Приветствую! Есть массив следующего вида: $response = array( &quot;A1F1&quot; =&gt; '2', &quot;A1F2&quot; =&gt; '3', ...

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

Сравнить между собой два одномерных массива поэлементно
сравнить между собой два одномерных массива поэлементно (т.е a-b, a-b) и передать в третий min элемент

Создать две последовательности данных и сравнить их между собой
Создать две последовательности данных и сравните их между собой всеми операторами сравнения.

подсчитать среднее арифметическое элементов и сравнить между собой.
Введите с клавиатуры одномерный массив S(B), элементами которого являются по- ложительные и отрицательные целые числа. Сформируйте массив...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru