0 / 0 / 0
Регистрация: 31.05.2018
Сообщений: 1
1

Как переписать многомерный массив(матрица) с изменениями в новый массив

31.05.2018, 18:38. Показов 926. Ответов 2
Метки нет (Все метки)

Здравствуйте, есть у меня двумерный массив. Если быть точнее то это матрица
PHP
1
2
3
4
5
6
7
$maitrix = [                                                 
                     [1000, 90, 60, 50, 70], //нумерация массивов начинается с 1
                     [20, 1000, 60, 10, 30],
                     [30, 10, 1000, 20, 70],
                     [40, 50, 30, 1000, 70],
                     [90, 10, 80, 20, 1000]
                                                      ];
Никак не могу понять как сделать вычитание из каждой строки по минимальному значению этой же строки (кроме 1000), чтобы было примерно такое:
PHP
1
2
3
4
5
6
7
$maitrix = [
                    [1000, 40, 10, 0, 20],
                    [10, 1000, 50, 0, 20],
                    [10, 0, 1000, 10, 60],
                    [10, 20, 0, 1000, 40],
                    [80, 0, 70, 10, 1000]
                                                       ];
Фантазии хватило только на такое
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$matrix1 = []
                          foreach($matrix as $key=>$tr){
                              foreach($tr as $key1=>$td){
                                   $td = (int)$td;     
 
                                     if ($td == 1000){
                                         array_push($matrix1, $td);    //здесь типа записываем в новый массив 1000 без изменений
                                     }
                                       elseif ($td < 1000) {
                                            $min [] = $td - min($tr);   
                                                  array_push($matrix1, $min);         //а тут уже от остальных чисел отнимаем и записываем  
             
                                                      }
                                             }
                                                                       
                                                                    
                                    }
Получается какая та фигня, да еще не пойму как старые значения в массиве переписать на новые, да еще чтобы осталась старая нумерация.
Пожалуйста подскажите как такое можно реализовать
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2018, 18:38
Ответы с готовыми решениями:

Как преобразовать массив создав новый из старого с изменениями?!
Дан массив размера N. Преобразовать его, вставив после каждого положительного числа нулевой...

Многомерный массив (матрица) на С++
Матрица K(m,m) состоит из нулей и единиц. Найти в ней номера строк и столбцов, не содержащих...

Многомерный массив (матрица)
Помогите пожалуйста решить такую задачку: задана квадратная матрица, нужно составить два вектора:...

Массив: Переписать в новый массив В все элементы из А, которые больше С.
Товарищи, нужна помощь с задачей: Задан массив А из n элементов и вещественное число с. Переписать...

2
1962 / 1192 / 433
Регистрация: 13.06.2013
Сообщений: 4,009
31.05.2018, 19:55 2
Указанный массив начинается с 0, хз откуда у вас 1. В любом случае никто не мешает скопировать массив и менять только значения.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$matrix = [                                                 
    [1000, 90, 60, 50, 70],
    [20, 1000, 60, 10, 30],
    [30, 10, 1000, 20, 70],
    [40, 50, 30, 1000, 70],
    [90, 10, 80, 20, 1000]
];
 
$matrix1 = $matrix;
 
foreach($matrix1 as &$row) {
    $min = min($row);
    
    foreach($row as &$value) {
        if ($value != 1000){
            $value -= $min;
        }
    }                                                         
}
 
print_r($matrix1);
0
0 / 0 / 1
Регистрация: 31.05.2018
Сообщений: 1
31.05.2018, 23:22 3
спасибо за помощь.

Добавлено через 3 минуты
спасибо за помощь.
PHP
1
2
3
4
5
6
7
$maitrix = [                                                 
                     [1000, 90, 60, 50, 70], //нумерация массивов начинается с 1
                     [20, 1000, 60, 10, 30],
                     [30, 10, 1000, 20, 70],
                     [40, 50, 30, 1000, 70],
                     [90, 10, 80, 20, 1000]
                                                      ];
Тут массив приходит из $_POST запроса. Специально сделал чтобы с 1 начиналось.

А как можно записывать с нужной нумерации ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 23:22
Помогаю со студенческими работами здесь

Удвоить элементы с четными номерами и переписать их в новый массив. Полученный массив отсортировать
4.Задача. Ввести с клавиатуры размерность и значения элементов линейного массива целых чисел....

Дан массив A(23). Переписать в новый массив все элементы, расположенные после последнего отрицательного.
Задача Дан массив A(23). Переписать в новый массив все элементы, расположенные после...

Массив: Элементы, находящиеся после максимального, переписать в новый массив В, если это возможно.
Ввести массив А. Элементы, находящиеся после максимального, переписать в новый массив В, если это...

Дана квадратная матрица A[N,N]. (Многомерный массив)
Дана квадратная матрица A. Записать на место отрицательных элементов матрицы нули, а на место...

Добавление массива в многомерный массив (не элемента в многомерный массив)
Доброго времени суток уважаемые форумчане! Столкнулся с такой проблемой: требуется в многомерный...

Как добавить строковый массив в многомерный массив типа дабл
Добрый день! Есть такая проблема, никак не получается добавить строковый массив в многомерный...


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

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

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