БлогNot. MathCAD: две "усложнённых" задачки

MathCAD: две "усложнённых" задачки

...приблизительно решённые вчера двумя человеками из отобранных тридцати "лучших".

1. Разделение положительных и отрицательных элементов вектора за один цикл.

Одномерный массив A произвольной размерности состоит из положительных и отрицательных элементов. С помощью одного оператора цикла сформировать массив B, помещая в него элементы массива A таким образом, чтоб в начале стояли все положительные элементы, а затем все отрицательные. Порядок следования отдельно положительных и отдельно отрицательных элементов в массиве B должен быть таким же, как в массиве A.

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

положительные элементы переносим в начало вектора, отрицательные - в конец, один цикл
положительные элементы переносим в начало вектора, отрицательные - в конец, один цикл

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

2. Соседи, которые больше.

Дана матрица A произвольной размерности. Вывести те её элементы, все соседи которых больше данного элемента. Например, в матрице

    | 3 2 1 |
A = | 0 4 5 |
    | 7 1 8 |

для элемента 4 соседними являются 0, 2, 5, 1, а для элемента 0 "соседи" 3, 4 и 7.

Ответом для данной матрицы будут ноль и обе единицы.

Вот одна из возможных реализаций функции, учитывающая различное число соседей у различных элементов:

соседние элементы матрицы, большие текущего элемента
соседние элементы матрицы, большие текущего элемента

Функция возвращает матрицу из трёх столбцов, в первом - значения найденных элементов, во втором - номера их строк, в третьем - номера столбцов. Везде предполагается, что значение системной переменной ORIGIN равно нулю (по умолчанию).

 Скачать эти задачи в файле MathCAD 14/15 (56 Кб)

06.05.2015, 13:16 [10135 просмотров]


теги: алгоритм mathcad

К этой статье пока нет комментариев, Ваш будет первым