Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/117: Рейтинг темы: голосов - 117, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 23

Умножение двух матриц на С++

16.05.2011, 01:02. Показов 23074. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброе время суток!
с днём Математиков ВАС, коллеги)

Мне надо реализовать умножение 2 матриц размерности NxM1, M1xN соответственно. (реализовать при помощи стека).

Программу я написал, но не могу найти причину, почему она у меня зацикливается?

Не могли бы помочь?
Вложения
Тип файла: txt Programma.txt (3.4 Кб, 386 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2011, 01:02
Ответы с готовыми решениями:

Умножение двух матриц
Помогите пожалуйста

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

Умножение двух матриц
Помогите написать перемножение двух матриц без создание третьей матрицы. Что-то написал, но не то очевидно... matrix*...

10
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 23
17.05.2011, 21:23  [ТС]
Ребята, помогите уж пожалуйста! Кто как сможет!!!! Срок поджимают!
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 00:41
1/ Текст надо выкладывать непосредственно.
2. Умножение матриц при помощи стека - вызывает БОЛЬШИЕ сомнения... Хотя бы в учебнике читал про умножение матриц?
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 07:42
machines,

C
1
2
3
4
5
6
7
8
9
10
11
12
13
// инициализация матрицы
for (int i = 0; i < N; ++i) 
   for (int j = 0; j < N; ++j){
    A[i][j] = 0.0f;
    B[i][j] = 1.0f;         
    }
// перемножение матриц
for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) {
    sum = 0; 
    for (k = 0; k < N; ++k)         
    sum += A[i][k] * B[k][j];       
    C[i][j] = sum;
    }
0
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 17:34  [ТС]
задание так и звучит: реализовать умножение матриц при помощи стека, тк матрицу можно представить как вектор.
При помощи массивов я его уже делал!
проблема возникает при реализации с помощью стека.
Первый получившийся элемент правильный. Но когда я засовываю эту подпрограмму (для вычисления одного элемент) в цикл, чтобы вычислить все элементы, то у меня возникают проблемы!
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 17:54
При помощи вектора - это совсем другое дело!
Я так понял, что матрицу надо объявить с помощью векторов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// -- объявление типов --
typedef vector<float> row;
typedef vector<row> matrix;
matrix A,B,C;
// инициализация матриц
row Row(M);
for (int i = 0; i < N; ++i) 
{  
   for (int j = 0; j < M; ++j)
   {
        Row[j] = rand()%100;
   }
   A.push_back(Row);
}
Аналогично заполняешь матрицу В. А умножение - не отличается.
0
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 18:12  [ТС]
немного не до понимание вышло.
пусть заданы 2 матрицы размерности NxM1 и M1xM.
Далее мы создаём стэк длиною (NxM1+M1xM). Далее ставим один указатель на начало 1-ой матрицы, а 2 указатель на начало 2-ой матрицы. => производим умножение матриц.

всё правильно, стэк!

массив не использовать.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 18:27
Похоже, что ты не знаешь, что такое стек.
Стек - это динамическая структура данных, в которой доступ только к вершине. Какие указатели?!
Только операции push() - положить в стек, и pop() - удалить из стека.
0
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 19:02  [ТС]
стэк-это набор элементов, в котором каждый элемент имеет ссылку на следующий после него элемент+ первым пришёл, последним ушёл. Нам так объясняли!
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
18.05.2011, 20:19
Ссылки на элементы не из этой оперы - это связные списки. Стек - структура данных без произвольного доступа, подчиняющаяся принципу LIFO - последним пришёл - первым ушёл. Как он будет реализован, в виде списка, массива или ещё как - это уже зависит от желания разработчика.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 20:47
Цитата Сообщение от machines Посмотреть сообщение
стэк-это набор элементов, в котором каждый элемент имеет ссылку на следующий после него элемент+ первым пришёл, последним ушёл. Нам так объясняли!
То, что ты написал - это СПИСОК. Список может быть использован для РЕАЛИЗАЦИИ стека.
Либо ты не понял, либо препод несет пургу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2011, 20:47
Помогаю со студенческими работами здесь

Умножение двух матриц 1000х1000
Ребят помогите пожалуйста. Надо умножить две матрицы 1000*1000. Обьявил их как int а мне пишет что они слишком большие.

Исправить ошибку (умножение двух матриц)
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void main() { SetConsoleOutputCP(1251); const int s = 2; int...

Написать программу, которая выполняет умножение двух матриц
Написать программу, которая выполняет умножение двух матриц (матрицы не квадратные).

Умножение двух матриц, ответ записывается в третью матрицу
Реализовать алгоритм умножения двух матриц, заданных пользователем. Результат умножения записывается в третью матрицу....

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ к элементам свёрнутой матрицы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru