Матрица в типизированном файле |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Матрица в типизированном файле |
iFool |
Сообщение
#1
|
Гость |
Задача.
Пусть матрица А целых чисел размером 100*100 записана по строкам в файле. Определите, является ди она единичной. Мне не понятно как запихнуть матрицу в типизированный файл и, самое главное, как потом проверить условие.... Помогите, пожалуйста... |
Neznaika |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Вот, что получилось у меня:
Объяснение "(Ord(I<>J) + K) <> 1": I и J изменяются от 1 до 100. Для диагональных элементов матрицы I = J. K - соответствующий элемент матрицы. Возможны два ПРАВИЛЬНЫХ варианта: 1) I = J, K = 1. 2) I <> J, K = 0. Первые условия могут быть либо TRUE, либо FALSE и отрицают друг друга. Пусть (I=J) будет эквивалентно FALSE, тогда (I<>J) будет эквивалентно TRUE. Получим 1) FALSE, K = 1. 2) TRUE, K = 0. Здесь уже видна СИММЕТРИЯ(которая собственно и нужна для создания подобных выражений), а именно порядковые номера FALSE и TRUE равны соответственно 0 и 1(Ord(FALSE) = 0, Ord(TRUE) = 1). Получили 1) 0, K = 1. 2) 1, K = 0. Видно, что когда матрица ЕДИНИЧНАЯ, то (0 + 1) = (1 + 0) = 1. Когда матрица НЕ ЕДИНИЧНАЯ, то складывая 0(для 1)) или 1(для 2)) с K получить 1 не удастся. Следовательно if (Ord(I<>J) + K) <> 1 then МАТРИЦА НЕ ЕДИНИЧНАЯ В архиве простенькая программа генерации единичной матрицы и программа "простой" проверки(My_TEST1). P.S. Так используются два цикла for и оба они прерываются при первой ошибке(при появлении первого "неправильного" элемента матрицы), Break для выхода из циклов применить нельзя, поэтому используется оператор GOTO. Даже целых два GOTO(бонус ). Прикрепленные файлы EMATRIX.rar ( 30.07 килобайт ) Кол-во скачиваний: 227 |
Текстовая версия | 7.05.2024 13:04 |