Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 117, средняя оценка - 4.74
machines
0 / 0 / 1
Регистрация: 16.05.2011
Сообщений: 23
#1

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

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

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

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

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

Не могли бы помочь?
0
Вложения
Тип файла: txt Programma.txt (3.4 Кб, 370 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 01:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Умножение двух матриц на С++ (C++):

Умножение двух матриц
Помогите написать перемножение двух матриц без создание третьей матрицы....

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

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

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

Исправить ошибку (умножение двух матриц)
#include <iostream> #include <windows.h> using namespace std; void main() {...

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

10
machines
0 / 0 / 1
Регистрация: 16.05.2011
Сообщений: 23
17.05.2011, 21:23  [ТС] #2
Ребята, помогите уж пожалуйста! Кто как сможет!!!! Срок поджимают!
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 00:41 #3
1/ Текст надо выкладывать непосредственно.
2. Умножение матриц при помощи стека - вызывает БОЛЬШИЕ сомнения... Хотя бы в учебнике читал про умножение матриц?
0
dampir_sanek
150 / 148 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 07:42 #4
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
machines
0 / 0 / 1
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 17:34  [ТС] #5
задание так и звучит: реализовать умножение матриц при помощи стека, тк матрицу можно представить как вектор.
При помощи массивов я его уже делал!
проблема возникает при реализации с помощью стека.
Первый получившийся элемент правильный. Но когда я засовываю эту подпрограмму (для вычисления одного элемент) в цикл, чтобы вычислить все элементы, то у меня возникают проблемы!
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 17:54 #6
При помощи вектора - это совсем другое дело!
Я так понял, что матрицу надо объявить с помощью векторов.
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
machines
0 / 0 / 1
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 18:12  [ТС] #7
немного не до понимание вышло.
пусть заданы 2 матрицы размерности NxM1 и M1xM.
Далее мы создаём стэк длиною (NxM1+M1xM). Далее ставим один указатель на начало 1-ой матрицы, а 2 указатель на начало 2-ой матрицы. => производим умножение матриц.

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

массив не использовать.
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 18:27 #8
Похоже, что ты не знаешь, что такое стек.
Стек - это динамическая структура данных, в которой доступ только к вершине. Какие указатели?!
Только операции push() - положить в стек, и pop() - удалить из стека.
0
machines
0 / 0 / 1
Регистрация: 16.05.2011
Сообщений: 23
18.05.2011, 19:02  [ТС] #9
стэк-это набор элементов, в котором каждый элемент имеет ссылку на следующий после него элемент+ первым пришёл, последним ушёл. Нам так объясняли!
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
18.05.2011, 20:19 #10
Ссылки на элементы не из этой оперы - это связные списки. Стек - структура данных без произвольного доступа, подчиняющаяся принципу LIFO - последним пришёл - первым ушёл. Как он будет реализован, в виде списка, массива или ещё как - это уже зависит от желания разработчика.
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 20:47 #11
Цитата Сообщение от machines Посмотреть сообщение
стэк-это набор элементов, в котором каждый элемент имеет ссылку на следующий после него элемент+ первым пришёл, последним ушёл. Нам так объясняли!
То, что ты написал - это СПИСОК. Список может быть использован для РЕАЛИЗАЦИИ стека.
Либо ты не понял, либо препод несет пургу...
0
18.05.2011, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 20:47
Привет! Вот еще темы с решениями:

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

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

Вычисление степени матрицы, вычисления произведения двух матриц, вычисление суммы двух матриц
Здравствуйте, помогите решить, пожалуйста: Заданы две квадратные матрицы А и В....

Умножение матриц
complex &lt;double&gt; c; for (int r = 0; r &lt; 4; r++) for (int...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru