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 просмотров]