Помогите решить 3 задачи на Паскале

Ответить
Aishe
Сообщения: 1
Зарегистрирован: 22 май 2006, 17:43

22 май 2006, 18:13

Остались 3 последние задачи, никак добить их не могу..подскажите, кто знает как их решить.

1)Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своём столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной матрицы размером 10х15 напечатать индексы всех её седловых точек.

2)Известно, что в следущем фрагменте программы массив матрица содержит оценки студентов группы, фамилии которых перечислены в типе фамилия:
type
Фамилия=(Иванов,Петров,Сидоров);
Предмет=(матанализ,алгебра,история);
Var
Матрица:Array[фамилия,предмет] of integer;
Выяснить, сколько студентов группы имеют средний балл, наименее отклоняющегося по абсолютному значению от среднего балла всей группы.

3)Определить, является ли заданная целая квадратная матрица 10-ого порядка ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

23 май 2006, 13:06

1. Алгоритм на псевдокоде может быть следующим (не знаю, как насчнт оптимальности в смысле скорости, но результат давать должен :) )

Код: Выделить всё

цикл по строкам
  для текущей строки (Y) найти номер столбца минимального элемента (X_min) этой строки;
  Для найденного столбца (с номером X_min) найти номер строки максимального элемента (Y_max) этого столбца;
  Если Y (т.е. номер текущей строки) = найденному Y_max, то элемент матрицы (X_min, Y) является седловой точкой;
все (цикл по строкам);
Ну, а найти номер мин/макс элемента вектора (строки или столбца) - это несложно - просто пройти по этому вектору и смотреть мин/макс элемент.
Ответить