Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
 Аватар для Johny be Good
7 / 7 / 3
Регистрация: 25.09.2010
Сообщений: 89

Умножение матрицы и транспонирование

27.09.2010, 19:13. Показов 7042. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо перемножить матрицу1 на вектор2(сохраняя в массиве 3). И транспонировать матрицу1 в матрицу4. Код вроде бы рабочий но почему то после умножения 4 и 5 члены массива3 = 0. А транспонированную матрицу заполняет вообще всю нулями(
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace lab01
{
    class Program
    {
        int[,] Array, TransArray;
        int[] Vector, MultVector;
        //инициализация массива
        public Program(int i, int j)
    {
        Array = new int[i,j];
        TransArray = new int[j,i];
        Vector = new int[j];
        MultVector = new int [i];
    }
    //заполнение массива числами
    public void InputData()
{
    Random Num = new Random();
    for (int i=0; i<=Array.GetUpperBound(0); i++)
        for(int j=0; j<=Array.GetUpperBound(1); j++)
{
    Vector[j] = Num.Next(1,10);
    Array[i,j] = Num.Next (1,10);
}
}
//вывод значений одномерного массивас индексами
public void Output(int[] Arr, string name)
{
Console.WriteLine("Массив {0}", name);
for(int i=0; i<Arr.Length; i++)
Console.Write("{0}[{1}]={2}\t", name, i, Arr[i]);
Console.WriteLine();
}
//вывод значений двухмерного массива с индексами
public void Output(int[,] Arr, string name)
{ Console.WriteLine("Массив {0}",name);
for (int i=0; i<=Arr.GetUpperBound(0); i++)
{
 for (int j=0; j<=Arr.GetUpperBound(1); j++)
Console.Write("{0}[{1},{2}]={3}\t", name, i ,j, Arr[i,j]);
Console.WriteLine();
}
}
//умножение массива Array на вектор Vector с помещением результата в массив MultVector
public void Multiply()
{
    for (int i = 0; i <Vector.Length; i++)
    {
        for (int j = 0; j < Vector.Length; j++)
 
            MultVector[i] += Array[i,j] * Vector[j];
    }
}
 
 
public void Transpon()
{
    for (int i = 0; i < Array.GetUpperBound(0); i++)
    
        for (int j = 0; j < Array.GetUpperBound(1); j++)
        
            Array[i, j] = TransArray[j, i];
    }
 
 
 
static void Main()
{
    Program obj = new Program(6,4);
obj.InputData();
obj.Output(obj.Vector, "Vector");
obj.Output(obj.Array, "Array");
obj.Multiply();
obj.Output(obj.MultVector, "Mult");
obj.Transpon();
obj.Output(obj.TransArray, "Trans");
Console.ReadLine();
 
 
}
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2010, 19:13
Ответы с готовыми решениями:

Транспонирование матрицы
Дана матрица размером NXM.Транспонировать матрицу и поменять элементы дополнительной матрицы на сумму цифр соответствующего элемента,...

транспонирование матрицы
транспонирование целочисленной матрицы, нужна работающая программа для курсовой на языке C#, прошу помощи, курсач написал))

Транспонирование матрицы
Привет всем!Передо мной поставили задачу написать программу (УСЛОВИЕ:дана матрица(m на n )не КВАДРАТНАЯ, необходимо транспонировать ее и в...

5
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
27.09.2010, 21:47
почему длина масива не GetUpperBound а Vector.Length? и кажется там скобочки не нужны. попробуй

C#
1
2
3
4
5
6
7
8
9
public void Multiply()
{
    for (int i = 0; i <Array.GetUpperBound(0); i++)
    {
        for (int j = 0; Array.GetUpperBound(1); j++)
 
            MultVector[i] += Array[i,j] * Vector[j];
    }
}
1
 Аватар для Johny be Good
7 / 7 / 3
Регистрация: 25.09.2010
Сообщений: 89
27.09.2010, 21:57  [ТС]
Ну он посчитал теперь mult[4], Но 5 по прежнему 0. А транспонированная матрица вся в нулях(
0
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
27.09.2010, 22:27
попробуй
for (int i = 0; i<=Array.GetUpperBound(0); i++) и для второго цикла это там где умножение

для транспонирования цикл неправильно наверно запущен. попробуй

C#
1
2
3
4
5
6
7
8
public void Transpon()
{
    for (int i = 0; i <= Array.GetUpperBound(0); i++)
    {
        for (int j = 0; j <= Array.GetUpperBound(1); j++)        
            Array[i, j] = TransArray[j, i];
    }
}
1
 Аватар для Johny be Good
7 / 7 / 3
Регистрация: 25.09.2010
Сообщений: 89
28.09.2010, 16:52  [ТС]
Всё спс за умножение)) транспонирование немного по другому, если кому надо напишу
1
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
27.12.2010, 15:04
Лучший ответ Сообщение было отмечено как решение

Решение

транспонирование матрицы:
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
98
99
100
101
102
103
104
105
106
107
108
109
using System;
using System.Collections.Generic;
using System.Text;
 
namespace transpmatrix
{
    class Matrix
    {
        // Матрица, строки, колонки
        int[,] matrix;
        int mxRows;
        int mxCols;
        
        // Инициализация
        public Matrix(int nRows, int nCols)
        {
            mxRows = nRows;
            mxCols = nCols;
            matrix = new int[nRows, nCols];
        }
 
        // Получения числа колонок
        public int GetMatrixCols
        {
            get { return mxCols; }
        }
 
        // Получения числа строк
        public int GetMatrixRows
        {
            get { return mxRows; }
        }
 
        // Доступ к элементам матрицы
        public double this[int i, int j]
        {
            set { matrix[i, j] = Convert.ToInt16(value); }
            get { return matrix[i, j]; }
        }
    }
    
    class Core
    {
        static void Main(string[] args)
        {
            // Размеры матрицы
            int nOrigRows, nOrigCols;
            int i,j;
 
            // Запрашиваем размеры матрицы
            try
            {
                Console.Write("Число строк матрицы: ");
                nOrigRows = Convert.ToInt16(Console.ReadLine());
 
                Console.Write("Число колонок матрицы: ");
                nOrigCols = Convert.ToInt16(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("Неверные параметры матрицы!");
                Console.ReadLine();
                return;
            }
 
            // Создаем обычную и транспанированую матрицу
            Matrix mA = new Matrix(nOrigRows, nOrigCols);
            Matrix mT = new Matrix(nOrigCols, nOrigRows);
 
            Console.WriteLine("Матрица размером {0}x{1}", nOrigRows,nOrigCols);
            Console.WriteLine("--------");
 
            // Заполняем элементы матрицы
            for (i = 0; i < nOrigRows; i++)
            {
                for (j = 0; j < nOrigCols; j++)
                {
                    Console.Write("Элемент {0} строка {1}: ", j+1, i+1);
                    mA[i, j] = Convert.ToInt16(Console.ReadLine());
                    Console.WriteLine();
                }
            }
 
            // Транспонируем матрицу
            for (i = 0; i < nOrigCols; i++)
            {
                for (j = 0; j < nOrigRows; j++)
                {
                    mT[i, j] = mA[j, i];
                }
            }
 
            // Вывод результата
            Console.Clear();
            Console.WriteLine("Транспонированая матрица:\n");
 
            for (i = 0; i < mT.GetMatrixRows; i++)
            {
                for (j = 0; j < mT.GetMatrixCols; j++)
                {
                    Console.Write(" {0}", mT[i,j]);
                }
                Console.WriteLine();
            }
 
            Console.ReadLine();
        }
    }
}
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2010, 15:04
Помогаю со студенческими работами здесь

Транспонирование квадратной матрицы
Дана квадратная матрица n-го порядка. Реализовать ее транспонирование: поменять местами элементы матрицы, расположенные симметрично ...

Транспонирование прямоугольной матрицы
Доброго времени суток. Задача написать консольное приложение для транспонирования матрицы. Размер матрицы n и m вводятся пользователем. ...

Транспонирование целочисленной матрицы
Дорогие товарищи, кому не сложно помочь с написанием программы. (А то у меня в этом плане не очень хорошо получается) Задание:Составить...

Транспонирование матрицы по главной и побочной диагоналям
16.Дана квадратная матрица 10 × 10. Реализуйте программу для транспонирования матрицы по главной и побочной диагоналям, на языке C#....

Реализовать транспонирование матрицы без создания дополнительного массива
Привет всем! Помогите реализовать транспонирование матрицы без создания дополнительного массива. Вот код: using System; using...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru