Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
1

Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор.

31.05.2011, 21:06. Показов 1710. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогаю, помогаю! Хоть бы мне кто помог. Не знаю почему я не "взлюбил" функцию, но мы ее всей группой не взлюбили.
Ну так вот к чему я, есть такая задачка : Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор vect (из n элементов) с размещением результата в массиве res:
void matrvect(int n, int m, float *matr, float *vect, float *res)
Вот сама функция проги, не плохо бы дописать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
void matrvect(int n, int m, float *matr, float *vect, float *res)
{
  for (int i=0;i<n;i++)
  {
    float s = 0;
    for (int j=0;j<m;j++)
    {
      s += matr[i*m+j]*vect[j];
    }
    res[i] = s;
  }
}
...
Нам вообще две задачки к примеру "Hello World" показали, так что не судите строго

Добавлено через 3 часа 14 минут
Ну короче я тут кое-чего накалякал, может кто исправить:
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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void matrvect(int n, int m, float *matr, float *vect, float *res)
{
  for (int i=0;i<n;i++)
  {
    float s = 0;
    for (int j=0;j<m;j++)
    {
      s += matr[i*m+j]*vect[j];
    }
    res[i] = s;
  }
}
int main()
{
float a[5][6];
float b[6];
int i,j;
int rest;
clrscr();
randomize();
printf("Matrix: \n\n");
for(i=0;i<5;i++)
 {for(j=0;j<6;j++)
  {a[i][j]=random(10);
   printf(" %2.0f",a[i][j]);
  }
 printf("\n");
 }
printf("Vector: \n\n");
for(j=0;j<6;j++)
 {b[j]=random(10);
  printf(" %2.0f",b[j]);
  }
matrvect(i,j,*a,*b,*rest);
getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2011, 21:06
Ответы с готовыми решениями:

Напишите функцию для умножения матрицы на вектор
Помогите пожалуйста Напишите функцию для умножения матрицы на вектор. с++

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

Составить процедуру умножения матрицы на вектор
Составить процедуру перемножения двух матриц. Используя ее получить для заданной матрицы A и...

Составить программу умножения квадратной матрицы n*n на n-мерный вектор
Составить программу умножения квадратной матрицы n*n на n-мерный вектор

6
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
31.05.2011, 21:56 2
А вам не разрешают использовать динамические массивы?
0
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
31.05.2011, 21:59  [ТС] 3
Вообще-то можно было бы, но нас этому не учили, хотя я знаю что это массив который способен в любой момент изменять свой размер.
0
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
31.05.2011, 22:04 4
Это разборка питерская а не программа
Вот чего изменил
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
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
 
void matrvect(float n, float m, float **matr, float *vect, float *res)
{
  for (int i=0;i<n;i++)
  { 
    for (int j=0;j<m;j++)
    {
      res[i] += matr[i][j]*vect[j];
    }
    
  }
}
void main()
{
float i,j;
float n=5;
float m=6;
float a[6][5];
float rest[6];
float b[6];
clrscr();
randomize();
printf("Matrix: \n\n");
for(i=0;i<n;i++)
 {for(j=0;j<m;j++)
  {a[i][j]=random(10);
   printf(" %2.0f",a[i][j]);
  }
 printf("\n");
 }
printf("Vector: \n\n");
for(j=0;j<m;j++)
 {b[j]=random(10);
  printf(" %2.0f",b[j]);
  }
matrvect(n,m,a,b,rest);
getch();
}
По правилам всех функций и указателей на матрицы должно работать но...
Подозреваю что без динам массивов не обойтись, если надо могу переделать
1
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
31.05.2011, 22:21  [ТС] 5
Да похоже без этого не обойтись, а то компилятор ругается.

Добавлено через 12 минут
Дак может исправишь?
0
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124
31.05.2011, 22:24 6
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
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
 
void matrvect(float n, float m, float **matr, float *vect, float *res)
{
  for (float i=0;i<n;i++)
  { 
    for (float j=0;j<m;j++)
    {
      res[i] += matr[i][j]*vect[j];
    }
    
  }
}
void main()
{
float i,j;
float n=5;
float m=6;
float** a=new float* [n];
for (i=0;i<n;i++)
{
 a[i]=new float [m];
}
float rest[6];
float b[6];
clrscr();
randomize();
printf("Matrix: \n\n");
for(i=0;i<n;i++)
 {for(j=0;j<m;j++)
  {a[i][j]=random(10);
   printf(" %2.0f",a[i][j]);
  }
 printf("\n");
 }
printf("Vector: \n\n");
for(j=0;j<m;j++)
 {b[j]=random(10);
  printf(" %2.0f",b[j]);
  }
matrvect(n,m,a,b,rest);
printf("\n");
printf("Result: \n\n");
for (i=0;i<n;i++)
printf(" %2.0f",rest[i]);
getch();
}
Проверь умножение вручную, если что, форум тармазит!!!
1
В вечном поиске...
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
31.05.2011, 22:36  [ТС] 7
Мде, я кажется позабыл как умножается матрица на вектор, вот один из вариантов, кажись правильный:
3 3 7 8 1 5
0 4 6 7 1 3
6 7 2 7 2 8 - матрица
2 3 2 3 4 7
5 3 1 3 5 7

7 4 7 2 6 5 - вектор

129 93 150 105 125 - результат
0
31.05.2011, 22:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2011, 22:36
Помогаю со студенческими работами здесь

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

Составить вектор из количества нулевых элементов столбцов матрицы
Составить вектор из колличества нулевых элементов столбцов матрицы А{5x6} (-1; 0; 1;-5; 3; 5) (...

Умножить матрицу на вектор. Количество строк и столбцов матрицы произвольны
Условие: Умножить матрицу на вектор. Количество строк и столбцов матрицы произвольная. Количество...

1. Создать функцию, которая для произвольной матрицы вычисляет: 1. б) количество столбцов, содержащих данный элемент; 2. а) минимальную сумму по строк
помогите пожалуйста))


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru