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

Написать программу, умножающую и транспонирующую матрицы

10.12.2014, 04:47. Показов 1937. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуй! Меня зовут Аня. Студентка, первокурсница, блондинка... Учусь на программиста. Бла-бла-бла. В общем, на моих часах около пяти. Особого смысла ложиться я не вижу. Вторая лаба обеспечила второй бессонной ночью. Но цель намечена и обратного пути нет. Итак, обращаюсь к сообществу с просьбой помочь привести лабу в достойное состояние (кого я обманываю? Ведь толком ничего и не сделала, а сил больше нет) Всё, что я из себя выжала, вы можете лицезреть ниже. Прошу не бить палками/бросать камнями, а разъяснить (желательно на пальцах) что да как, ибо даётся мне всё это очень и очень нелегко. Спасибо за пониманиеУсловия задачи:
Написать программку, которая вычисляет для квадратным матриц А и В матрицу C=(АТ)2*BТ
Заметочки:
//транспонирование
for (int i = 0; i<m; i++)
for (int j=0; j<n; j++)
tMatrix[i][j] = Matrix[j][i];
//умножение
for (int i = 0; i < N; i++)
for (int j = 0; j < N; i++)
for (int k = 0; k < N; i++)
{
C[i][j] += A[i][k] * B[k][j];
}
//Запилить В и С
//Привести матрицу в годный вид
Буду благодарна за любую помощь)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <clocale>
#include <iostream>
using namespace std;
 
int main()
{
 
    setlocale(LC_ALL, "Russian");
    int stroka, stolbick;
    cout << "Задате количество строк и столбцев матрицы" << endl;
    cout << "Строк: ";
    cin >> stroka;
    cout << "Столбцев: ";
    cin >> stolbick;
 
    // Выделение памяти под двумерный динамический массив с введёнными пользователем измерениями
    int** t = new int*[stroka];// в переменной количество строчек, которое введёт пользователь
    for (int i = 0; i < stroka; ++i)
        t[i] = new int[stolbick];// количество столбцев
 
 
    //Заполнение массива
    for (int y = 0; y < stolbick; y++)
    {
        for (int x = 0; x < stroka; x++)
        {
            cout << "[" << y + 1 << "][" << x + 1 << "]: ";//сперва колич. строк, потом колич. столбиков 
            cin >> t[y][x];
        }
    }
    cout << endl;
    //Вывод
    for (int y = 0; y < stolbick; ++y)
    {
        for (int x = 0; x < stroka; ++x)
        {
            cout << t[y][x];
        }
        cout << endl;
    }
 
 
    // Освобождение памяти
 
    for (int i = 0; i < stroka; ++i)
        delete[] t[i];
 
    delete t;
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2014, 04:47
Ответы с готовыми решениями:

Написать функцию, умножающую все элементы массива на число
Ребят, помогите. Нужно написать две задачки по функциям. Написать функцию, умножающую все элементы массива на число. Параметрами...

Составить программу, транспонирующую матрицу
Дана квадратная матрица порядка N. Составить программу, транспонирующую эту матрицу. Не используя доп. массива.

Составить программу, транспонирующую заданную матрицу
Данная квадратная матрица порядка N. Составить программу, транспонирует эту матрицу. (Транспонированной называется матрица, в которой, в...

6
 Аватар для D_in_practice
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.12.2014, 05:20
1. можно без динамических массивов?
2. можно функции?
3. сделайте ввод двух матриц А и В
0
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 9
10.12.2014, 05:46  [ТС]
1. Можно, но лучше с ними, я уже разобралась)
2.Можно, но, мне кажется, это лишний раз меня запутает
3. В ближайших планах, а то уже крыша едет
Поможете чем?))
0
 Аватар для D_in_practice
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
10.12.2014, 06:18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <iomanip>
 
#include "stdafx.h"
#include <clocale>
 
const int N = 10;
 
using namespace std;
 
void print(int a[][N], int size){
    
    for (int i = 0; i < size; ++i){
        for (int j = 0; j < size; ++j)
            cout << setw(8) << a[i][j];
        cout << endl;
    }
    cout << endl;    
}
 
void transposition(int in[][N], int out[][N], int size){
    
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            out[i][j] = in[j][i];
}
 
void product(int a[][N], int b[][N], int c[][N], int size){//c = a*b
    
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j){
            
            c[i][j] = 0;
            for (int k = 0; k < size; ++k)
                c[i][j] += a[i][k]*b[k][j];
        }
}
 
int main(){
    
    setlocale(LC_ALL, "Russian");
    int size;
    
    cout << "Çàäàòå ðàçìåð ìàòðèöû" << endl;
    
    do{     
        cout << "size = ";//â êâàäðàò ìîæíî âîçâîäèòü òîëüêî êâàäðàòíóþ ìàòðèöó
        cin.clear();
        cin.sync();
        cin >> size;
    }while(size < 1 || N < size);
    
    int a[N][N];
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j){
            cout << "a[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> a[i][j];
        }
    cout << endl;
    
    int b[N][N];
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j){
            cout << "b[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> b[i][j];
        }
    cout << endl;
    
    int at[N][N];
    transposition(a, at, size); 
    cout << "A:" << endl; 
    print(a, size);
    cout << "At:" << endl; 
    print(at, size);
    
    int c[N][N];
    product(at, at, c, size);
    cout << "Àt*At:" << endl; 
    print(c, size);
    
    int bt[N][N];
    transposition(b, bt, size);
    cout << "B:" << endl; 
    print(b, size);
    cout << "Bt:" << endl; 
    print(bt, size);
       
    int buf[N][N];
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size; ++j)
            buf[i][j] = c[i][j];
            
    product(buf, bt, c, size);
    cout << "C=(Àt)^2*Bt:" << endl; 
    print(c, size);
    system("pause");
}
1
 Аватар для SmittWesson
236 / 196 / 21
Регистрация: 04.06.2014
Сообщений: 1,309
10.12.2014, 06:26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream.h>
#include<stdlib>
 
typedef unsigned int uint; // Новое имя целочисленного неотрицательного типа
 
// Транспонирование матрицы
double **MatrixTransposition(double **A, uint x)
{
  double a;
  for(uint i=0; i<x; i++)
    for(uint j=i+1; j<x; j++)
    {
     a = A[i][j]; A[i][j] = A[j][i]; A[j][i] = a;
    }
  return A;
}
 
// Умножение матриц N*N
double **MatrixMultiplication(double **A, double **B, uint x)
{
  for(uint i=0; i<x; i++)
    for(uint j=0; j<x; j++)
      A[i][j] *= B[j][i];
  return A;
}
Примерно так.
1
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 9
10.12.2014, 16:14  [ТС]
D_in_practice, cпасииииибище вам большое))

Добавлено через 2 минуты
SmittWesson, вам большое спасибо ))
0
10.12.2014, 16:40

Не по теме:

Цитата Сообщение от Annie96 Посмотреть сообщение
Здравствуй! Меня зовут Аня. Студентка, первокурсница, блондинка... Учусь на программиста. Бла-бла-бла. В общем, на моих часах около пяти. Особого смысла ложиться я не вижу. Вторая лаба обеспечила второй бессонной ночью. Но цель намечена и обратного пути нет. Итак, обращаюсь к сообществу с просьбой помочь привести лабу в достойное состояние (кого я обманываю? Ведь толком ничего и не сделала, а сил больше нет) Всё, что я из себя выжала, вы можете лицезреть ниже. Прошу не бить палками/бросать камнями, а разъяснить (желательно на пальцах) что да как, ибо даётся мне всё это очень и очень нелегко. Спасибо за понимание...
Вот это жеееееесть!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2014, 16:40
Помогаю со студенческими работами здесь

Составить программу, транспонирующую матрицу A размером n x n
Это задача на курсе экономической кибернетики) Нужно решить. Заранее огромное спасибо.

Необходимо написать пользовательскую функцию в табличном процессоре на языке VBA, транспонирующую матрицу А размера n*n. Функции в качестве аргументов
Необходимо написать пользовательскую функцию в табличном процессоре на языке VBA, транспонирующую матрицу А размера n*n. Функции в качестве...

Построить машину Тьюринга, умножающую число на 3
На ленте машины Тьюринга записано целое положительное число в двоичной системе счеления. Построить машину Тьюринга, умножающую это число на...

Используя идею обращения числовой матрицы написать программу для обращения булевой матрицы
Задание. Используя идею обращения числовой матрицы написать программу для обращения булевой матрицы Имеется абсолютное непонимание...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru