32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
1

Игнорирование знака отрицания в матрице

16.11.2020, 02:02. Показов 427. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Делаю калькулятор. Один из разделов калькулятора - работа с матрицами. Матрицы записываются именно таким способом:

[ 2 4 6 ; 6 1 9 ] + [ 15 2 9 ; 67 9 0 ]

Выражения могут быть сложнее, типо таких:

[ 2 4 6 ; 6 1 9 ] + [ 15 2 9 ; 67 9 0 ] * ([ 16 4 6 ; 32 3 2 ] - ([ 1 1 9 ; 6 7 9 ] * [ 15 11 6 ; 7 13 2 ]))

Проблема состоит в действии с разницой между двумя матрицами: если левая матрица меньше правой, то в результативной матрице будут значения с минусами. У меня есть метод, который определяет операцию, которая должна происходить между матрицами(или суммирование, или умножение и тд). И этот же метод играет важную роль в методе, который выделяет две матрицы по бокам операции для переведения их из типа string в тип int и для дальнейшем их расчёте.

Так вот, вы наверное сами догадались, что когда в матрице есть минусовые числа, то данный метод срабатывает неправильно. Как его переписать, чтобы он не реагировал на минусы которые находятся внутри квадратных скобок "[" "]"?

Вот приложу его сюда:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static int FindIndexOperation(string expression)
        {
            char[] operators = { '*', '/', '+', '-' };
            int index = -1;
 
            for (int i = 0; i < operators.Length; ++i)
            {
                for (int j = 0; j < expression.Length; ++j)
                {
                    if (expression[j] == operators[i])
                    {
                        if (operators[i] == '-' && j == 0) continue;
                        else if (operators[i] == '-' && expression[j - 1] == '(') continue;
                        index = j;
                        return index;
                    }
                }
            }
 
            return index;
        }
PS: Данный метод вполне отлично справляется с задачами в нематричных выражениях(они могут так же иметь отрицательные числа), а так же в выражениях матричных, где матрицы не имеют в себе отрицательных чисел, поэтому правильнее будет сказать, что я хочу не переписать этот метод, а создать похожий, только такой, чтобы он соответствовал реалиям работы с матрицами.

Добавлено через 3 часа 57 минут
Я решил.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2020, 02:02
Ответы с готовыми решениями:

Изменение знака на противоположный, в матрице
Нужно в каждом столбце заменить максимальный элемент на противоположный (если -1 максимальный, то...

Число перемен знака в матрице
Салют! Задача такая: дана матрица A, i=1...m, j=1...n. Сформировать массив B, i=1...m,где B равно...

Выполнить сложение в матрице, состоящей из чисел и знака +
Дана строковая матрица. Она рандомно заполнена целыми числами, а также в ее середину рандомно...

Координаты чисел в матрице, где происходит смена знака
Дана матрица порядка n , в которой есть положительные и отрицательные числа. Выдать координаты...

0
16.11.2020, 02:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2020, 02:02
Помогаю со студенческими работами здесь

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

в прямоугольной матрице определить количество столбцов, содержащих только числа 1-го знака (положительного и отрицательного...
в прямоугольной матрице определить количество столбцов, содержащих только числа 1-го знака...

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

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

Как выводить спецсимволы? Типа знака степени, знака корня и т.д.
Вы уж извините, что много тем создаю. Я не нашел...

Как сделать так чтобы в паскале после знака запятой оставалось только 4 знака?
Как сделать так чтобы в паскале после знака запятой оставалось только 4 знака? Например число...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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