Вывод матрицы в файл, Матрица выводится в файл в виде строки или столбца |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Вывод матрицы в файл, Матрица выводится в файл в виде строки или столбца |
Vasya_linux |
12.01.2012 11:29
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Здравствуйте уважаемые форумчане!
Задача: Ввод матрицы из файла и вывод этой же матрицы под другим именем в другой файл (файлы задаются пользователем). В итоге на экран вывод нормальный, а в файл только в строку или в столбец. Где ошибка не пойму. Помогите пожалуйста. Вот код:
|
TarasBer |
12.01.2012 11:38
Сообщение
#2
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ты забыл кое-что:
for j:=1 to m do write(f,new_matr[i,j]:8:3); writeln(f); end; Сообщение отредактировано: TarasBer - 12.01.2012 11:38 -------------------- |
Vasya_linux |
12.01.2012 11:58
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Ты забыл кое-что: for j:=1 to m do write(f,new_matr[i,j]:8:3); writeln(f); end; Благодарю за оперативность. Спасибо, выручили крепко. Но... Появилось еще несколько вопросов. Посоветуйте пожалуйста. 1. Где можно найти примеры программ на Паскале для сеточных вычислений. Хотя бы алгоритмы. 2. Как обойти или расширить выделяемую Паскалем память. Может быть есть какие-нибудь директивы. Боюсь для сеток не хватит памяти. Или мне на Питон перейти, он вроде как родной для Линукса? Заранее благодарен. |
TarasBer |
12.01.2012 13:11
Сообщение
#4
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ограничения по памяти связаны с тем, что Турбопас под дос и реальный режим, у которого с памятью хреново. Короче, FPC линуксовый возьми, там нет ограничений на память.
Что такое сеточные вычисления - не знаю. -------------------- |
Vasya_linux |
12.01.2012 15:28
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
На FPC линуксовом и работаю, спасибо.
Не знал, что там нет ограничений на память. |
TarasBer |
12.01.2012 15:44
Сообщение
#6
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ты только в настройках компилятора поройся хорошенько, там это есть.
Выставь 32-битный режим например. -------------------- |
Vasya_linux |
12.01.2012 16:15
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Тарас, благодарю за помощь. Прошу еще немного терпения.
Тема еще не закрыта. Я хочу сделать модификацию этой самой программы, но так, чтобы она считывала данные с исходного файла по частям. Скажем, в файле несколько матриц размером 3х4, но они без разрывов находятся в файле (т.е. одна матрица под другой). Программа считывает 1-ю и умножает на 2-ю и выводит в 3-ю. Так как матрицы одной размерности, то все должно быть хорошо. Одно удручает - мой код совсем плох. Если у тебя будет время, подскажи, где ошибка. Может я неправильно мыслю. Вот код: const Может мне пораспихивать эти матрицы по файлам. Но тогда как открыть 3-4 файла на чтение сразу? Сообщение отредактировано: Vasya_linux - 12.01.2012 16:24 |
TarasBer |
12.01.2012 16:27
Сообщение
#8
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
В чём проблема? Матрицы последовательно считываются из файла, да.
> Но тогда как открыть 3-4 файла на чтение сразу? В данном случае это не нужно, но вообще - заводишь 3-4 файловые переменные и каждую связываешь со своим файлом. -------------------- |
Vasya_linux |
12.01.2012 16:49
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
>>> В чём проблема? Матрицы последовательно считываются из файла, да.
Проблема в том, что этот код не работает. Выводятся 0. Сообщение отредактировано: Vasya_linux - 12.01.2012 16:51 |
TarasBer |
13.01.2012 9:22
Сообщение
#10
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
хз.
Почему первая матрица читается в строки for i:=1 to 2 do а вторая в for i:=3 to N do -------------------- |
Vasya_linux |
13.01.2012 11:17
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
хз. Почему первая матрица читается в строки for i:=1 to 2 do а вторая в for i:=3 to N do Эту задачу нужно решить двумя путями. 1. В исходном файле данных одна большая матрица, скажем 9х4 9 строк и 4 столбца. Программа считывает первые 3 строки и 4 столбца - т.е. первую часть этой матрицы, которая будет самостоятельной матрицей и над которой можно будет выполнять преобразования. Далее считываются строки от 4-й по 6-ю включительно и т.д. 2. Но можно и по другому (что в принципе проще) открыть на чтение 3 файла со своими матрицами 3х4 и спокойно считывать и работь с этими матрицами. |
IUnknown |
13.01.2012 11:38
Сообщение
#12
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Файл данных совсем нельзя привести, на котором у тебя происходит некорректная работа программы? Чтоб не выдумывать что-то свое, а взять то, что у тебя УЖЕ не работает и проверить...
|
TarasBer |
13.01.2012 11:39
Сообщение
#13
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Но ты совместил эти пути, считывая в разные строки разных матриц.
Хотя обрабатываешь (делаешь покомпонентное умножение) ты их так, будто ты считывал в один строки. -------------------- |
Vasya_linux |
13.01.2012 11:42
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Файл данных совсем нельзя привести, на котором у тебя происходит некорректная работа программы? Чтоб не выдумывать что-то свое, а взять то, что у тебя УЖЕ не работает и проверить... Да просто заполните матрицу так: 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 Вот и все данные (1- первая матрица, 2 -вторая ...). |
TarasBer |
13.01.2012 12:00
Сообщение
#15
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ты работаешь с данными так, словно они находятся в разных матрицах:
-------------------- |
Vasya_linux |
13.01.2012 12:03
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Ты работаешь с данными так, словно они находятся в разных матрицах:
Именно так и есть! Просто мне трудно объяснить. Ладно вот код, который немного иначе построен - это 2-й вариант:
Но опять не работает. Я уже замучался сам, да и Вас замучал. Помогите пожалуйста исправить ошибку(ки). Сообщение отредактировано: Vasya_linux - 13.01.2012 12:06 |
IUnknown |
13.01.2012 12:13
Сообщение
#17
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата Да просто заполните матрицу так: А теперь просто зайди в отладчик и посмотри, что прочиталось из файла Цитата for i:=3 to N do {s4itivaem 2-y matrisy iz isxodnogo faila} Сообщение отредактировано: IUnknown - 13.01.2012 12:17 |
Vasya_linux |
13.01.2012 12:15
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
|
IUnknown |
13.01.2012 12:18
Сообщение
#19
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Читай выше, я написал в чем проблема...
|
Vasya_linux |
13.01.2012 12:32
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Вася Репутация: 0 |
Хорошо, но в моей последней редакции кода все нормально.
Т.е. матрицы считываются каждая со своего файла, но воз и ныне там. Код не работает. Где ошибка ??? 3 файла, 2 матрицы, 3-я матрица результирующая. И все, этого достаточно. Помогите пожалуйста. Сообщение отредактировано: Vasya_linux - 13.01.2012 13:32 |
Текстовая версия | 1.06.2024 6:50 |