|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Здравствуйте, господа. Подскажите, пожалуйста, начинающим лисоводам как можно решить следующую задачу? Во входном файле задана матрица целых чисел в виде строк. Элементы строки матрицы разделяются запятыми. В строках находятся только элементы матрицы и разделители. Элементы матрицы не содержат лидирующих нулей. Максимальный размер матрицы 1000 х 1000. Количество цифр в элементах матрицы ≤ 500. В выходном файле получите транспонированную матрицу в виде строк.Чтобы элементы строки матрицы разделялись запятыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:29 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Прочитать исходный файл в массив, транспонировать во второй массив, записать второй массив в выходной файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:34 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Dima T, мы не знаем как транспонирование само делать(((( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:36 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Погуглить пробовали? Например в википедии почитать ... для получения транспонированной матрицы из исходной нужно каждую строчку исходной матрицы записать в виде столбца в том же порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:40 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Dima T, именно в фокспро как делается - есть какие-то специальные функции или тупо перестановку надо как-то организовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:51 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Нет специальных функций, фокспро не эксель, не заточен на работу с матрицами. Тупо перестановку в цикле. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 13:54 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Можешь залить в курсор с полями: Столбец, Строка, Значение. Отсортировать по полям Строка,Столбец. SCANом вывод значений в конечный файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 14:00 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Напутал немного: Залить в курсор с полями: Столбец, Строка, Значение. Отсортировать по полям Столбец, Строка . SCANом вывод значений в конечный файл с переходом на новую строку при изменении в поле Столбец. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 14:03 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Dima T, продумываем алгоритм и возник такой вопрос сопутствующий : как в 6й версии FoxPro из Memo копировать данные в массив? Функция ALINES( ) не подходит по версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 14:30 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
В мемо поле что именно записано? Весь исходный файл или одна строка? В 6-ке массив может содержать максимум 65000 элементов, поэтому массив 1000 х 1000 не создастся. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 14:42 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
С помощью ALINES() разбить на строки, а строки распарсить Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 15:03 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Vipera_lebetina, Вот примерчик : PROCEDURE TranspMat * Транспонирование матрицы * матрица: *** * 1 2 3 4 * 5 6 7 8 * 9 10 11 12 * 13 14 15 16 *SET STEP ON *Создаем курсор CREATE CURSOR m1 (p1 n(2,0),p2 n(2,0),p3 n(2,0),p4 n(2,0)) * заносим в него данные INSERT INTO m1 values(1,2,3,4) INSERT INTO m1 values(5,6,7,8) INSERT INTO m1 values(9,10,11,12) INSERT INTO m1 values(13,14,15,16) * смотрим результат SELECT m1 BROWSE TITLE 'Исходная матрица ' ** Создаем курсор для транспонирования CREATE CURSOR t1 (p1 n(2,0),p2 n(2,0),p3 n(2,0),p4 n(2,0)) * Транспонируем FOR ii=1 TO 4 FieldMatr = 'm1.P'+ALLTRIM(STR(ii)) && Поле, из которого берем SELECT t1 APPEND BLANK SELECT m1 it =1 SCAN NameField = 'P'+ALLTRIM(STR(it)) && Поле, в которое втавляем replace &NameField WITH &FieldMatr IN t1 it = it+1 ENDSCAN ENDFOR * смотрим результат - матрица повернута SELECT t1 BROWSE TITLE 'Транспонированная матрица ' * Транспонируем еще раз, чтобы показать, * что дважды транспонированнная матрица принимает исходное состояние USE IN m1 && Закрываем исходную матрицу и создаем пустую исходную CREATE CURSOR m1 (p1 n(2,0),p2 n(2,0),p3 n(2,0),p4 n(2,0)) FOR ii=1 TO 4 FieldMatr = 't1.P'+ALLTRIM(STR(ii)) && Поле, из которого берем SELECT m1 APPEND BLANK SELECT t1 it =1 SCAN NameField = 'P'+ALLTRIM(STR(it)) && Поле, в которое втавляем replace &NameField WITH &FieldMatr IN m1 it = it+1 ENDSCAN ENDFOR * смотрим результат - матрица повернута SELECT m1 BROWSE TITLE 'Дважды транспонированная матрица ' ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 21:34 |
|
Как транспонировать матрицу ?
|
|||
---|---|---|---|
#18+
Vipera_lebetina, если в VFP 6 надо транспонировать матрицы 1000x1000, единственный вариант разместить данные для прямого доступа - это создать текстовый массив. Команда DIMENSION допускает квадратную матрицу не более, чем 254x254, число столбцов в таблице не может быть более 255. Так что придётся работать примерно таким манером: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 23:21 |
|
|
start [/forum/topic.php?fid=41&msg=38744269&tid=1582525]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 180ms |
0 / 0 |