Помощь - Поиск - Пользователи - Календарь
Полная версия: Умножение матриц с удаление нулевых строк!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
metamfetamin
Люди помогите пожалуста!!!
Нужно написать програму на Pascal умножение 2-ух матриц.
И что бы в программе выполнялась проверка на нулевые строки и столбцы и если в матрицах они есть то что б удаляло....
Матрица А[7x6] и B[6x8]
Матрицы находятся на диске С:\ в текстовом файле (пример С:\1.txt).

мисс_граффити
чем-то не понравилось выложенное умножение?
Массивы. Матрицы. Типичные задачи.
metamfetamin
Цитата(мисс_граффити @ 7.10.2007 23:07) *

чем-то не понравилось выложенное умножение?


А чем сообственно не понравилось?????
мисс_граффити
вот и я спрашиваю - чем?
metamfetamin
В самой проге не выполняется не одно действие которое должно выполнятся:
1) Ни вывод матриц.
2)ни удаление нулевых строк и столбцов.
3) А по скольку не выполняется 2 пункт то соответственно и умножение получених матриц не выполняется.
Ozzя
1. Есть по той же ссылке, 2-3 экрана вверх прокрутить.
2. Поищи в "Задачах" - "удаление строк (столбцов)".
Neznaika
Вы определяете матрицы как a:array [1..8,1..8] of string [1];,
то есть как таблицы строк, а не чисел. Это может привести к размягчению мозга.
Чтобы это не произошло нужно работать с числами, а не со строками,
и все преобразования из строк в числа возложить на процедуры ввода/вывода.

Я немного изменил формат файла 1.txt на следующий:
============= Файл 1.txt ====================
М P1
A[1,1] ... A[1,P1]
........................
A[M,1] ... A[M,P1]
P2 N
B[1,1] ... B[1,N]
........................
B[P2,1] ... B[P2,N]
=========================================

В архиве программа умножения матриц A и B - MMUL.
Вызов: MMUL < 1.txt

Попробуйте самостоятельно написать удаление строк/столбцов.
Только необходимо учесть, что после такого удаления матрицы нельзя будет перемножить.
volvo
Цитата
Только необходимо учесть, что после такого удаления матрицы нельзя будет перемножить.
Неверно... НЕ ВСЕГДА можно будет перемножить, ибо в приведенном автором примере матрицы и после удаления остаются сцепленными...
Neznaika
volvo, да, с матрицами в 1.txt так и будет.
Но я изменил формат, чтобы можно было вводить любые матрицы до 32x32 включительно,
предупреждение не помешает.
------------------------------------------------------------------------------------------------------------
Поспешил, правильно так:
Цитата
Только необходимо учесть, что после такого удаления матрицы не всегда удастся перемножить.

metamfetamin
Цитата(Neznaika @ 8.10.2007 14:34) *

Вы определяете матрицы как a:array [1..8,1..8] of string [1];,
то есть как таблицы строк, а не чисел. Это может привести к размягчению мозга.
Чтобы это не произошло нужно работать с числами, а не со строками,
и все преобразования из строк в числа возложить на процедуры ввода/вывода.

Я немного изменил формат файла 1.txt на следующий:
============= Файл 1.txt ====================
М P1
A[1,1] ... A[1,P1]
........................
A[M,1] ... A[M,P1]
P2 N
B[1,1] ... B[1,N]
........................
B[P2,1] ... B[P2,N]
=========================================

В архиве программа умножения матриц A и B - MMUL.
Вызов: MMUL < 1.txt

Попробуйте самостоятельно написать удаление строк/столбцов.
Только необходимо учесть, что после такого удаления матрицы нельзя будет перемножить.


А почему после того как я ввожу две матрицы и нажимаю enter то ничего не происходит и оно меня обратно выкидывает к листинку????
Neznaika
Можно перед end. поставить ReadLn, тогда программа остановится и будет ждать нажатия Enter.
Или лучше запускать её в FAR'е так, как я написал выше:
MMUL < 1.txt
Там можно после запуска программы нажать Ctrl+O и посмотреть результат, выводимый на экран.
metamfetamin
Цитата(Neznaika @ 8.10.2007 14:34) *

Попробуйте самостоятельно написать удаление строк/столбцов.
Только необходимо учесть, что после такого удаления матрицы нельзя будет перемножить.



У меня есть кусочки програмы ...... по поводу удаления строк и столбцов......но я не могу сообразить куда и как и кусочки засунуть чтоб они удаляли нулевые строки из вводимы матриц??????
Сами кусочки по удалению строк и столбцов вот.!!!!!!!!

Добавлено через 14 мин.
Цитата(Neznaika @ 8.10.2007 22:13) *

Можно перед end. поставить ReadLn, тогда программа остановится и будет ждать нажатия Enter.
Или лучше запускать её в FAR'е так, как я написал выше:
MMUL < 1.txt
Там можно после запуска программы нажать Ctrl+O и посмотреть результат, выводимый на экран.



У меня есть вот в файле некоторые кусочки с програм которые можно использовать в моей программе....... но я незнаю как и куда ети кусочки нужно повставлять и где и что в переменних нужно дополнительно описать?????????
volvo
metamfetamin, в аттаче - программа, которая работает с заданным тобой же файлом данных (без изменения формата): читает исходные матрицы A и B из файла, удаляет в них нулевые строки/столбцы, потом проверяет, являются ли полученные после удаления строк/столбцов матрицы сцепленными в любой комбинации (т.е., можно ли производить умножение A * B или B * A), и если умножение матриц допустимо - то оно производится... Иначе выдается сообщение о невозможности операции...

Нажмите для просмотра прикрепленного файла

На всякий случай - файл данных, с которым отработала программа:
Нажмите для просмотра прикрепленного файла

Будут вопросы - задавай, постараюсь объяснить то, что тебе будет неясно...

Update: В случае, когда обе матрицы - квадратные (когда возможны оба варианта перемножения) производится умножение
res = A * B
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.