Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
un4got10
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 2
#1

в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А - C++

19.06.2013, 14:46. Просмотров 782. Ответов 14
Метки нет (Все метки)

2. в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А
заранее спасибо, буду очень благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2013, 14:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А (C++):

Найти первый столбец матрицы не содержащий отрицательных элементов - C++
/*ищем первый столбец не содержащий отриц. элементов и выводим № этого столбца. Но я не могу понять как сделать так, чтобы если все...

Среди столбцов матрицы А найти столбец, содержащий минимальное произведение своих элементов и принять этот столбец за вектор X - C++
Задача заключается в следующем: 1)Построить матрицу. Матрицу построил, но она выводится в строку. Как вывести её нормально, по столбцам...

Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер - C++
1)Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер. 2) Проверить, есть ли в матрице...

Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный нулю, и найти его номер. - C++
Всем доброго времени суток, помогите разобраться с задачей. Проверить, есть ли в матрице хотя бы один столбец, содержащий элемент, равный...

Умножить матрицу 10х10 на вектор из 10 элементов - C++
дана матрица:10*10.умножить ее на вектор 10.помогите пожалуйста...очень нужно

Найти обратную матрицу и умножить ее на вектор - C++
Очень нужна помощь для нахождения обратной матрицы на С++. Дело в том что мне нужно реализовать такую задачу: найти обратную матрицу и...

14
Марат_09
5 / 5 / 1
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 17:03 #2
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
    const int n = 2 , m = 4;
 
    int flag = 0;
    int ink = 0;
 
    int A[n][m];
    int vector[n];
 
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
        {
            cout <<" A["<< i <<"]["<< j <<"]= ";
            cin >> A[i][j];
            cout << endl;
        }
          
    for(int i=0; i<m; i++)
    {
        if( flag != -1 )
        {
            for(int j=0; j<n; j++)
            {
                if( A[j][i] >= 0 )
                    flag ++;
                else
                    flag = 0;
 
                if( flag == m )
                    ink = j;
            }
 
            if( flag == m )
            {
                for(int k=0; k<n; k++)
                {
                    vector[k] = 0;
 
                    for(int d=0;d<m;d++)
                        vector[k] += A[d][ink] * A[k][d];
                }
 
                flag = -1;
                break;
            }
            else
            {
                flag = 0;
                ink = 0;
            }
        }
        else
            break;
    }
 
    //
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
            cout <<"  "<< A[i][j];
        cout << endl;
        cout << endl;
    }
 
    //
    for(int i=0; i<n; i++)
        cout <<" "<< vector[i];
    cout << endl;
Добавлено через 16 секунд
надо будет отладить!
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 18:58 #3
Цитата Сообщение от Марат_09 Посмотреть сообщение
надо будет отладить!
задача имеет смыл только для квадратных матриц!
0
Марат_09
5 / 5 / 1
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 21:50 #4
в данном случае она может применяться для любого случая! Если хотите, то задавайте квадратную матрицу!
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 21:53 #5
Цитата Сообщение от Марат_09 Посмотреть сообщение
в данном случае она может применяться для любого случая!
ну-ну, умножьте любой столбец матрица размера 2 на 3 на саму матрицу, например
матрица
1 2 3
4 5 6
и столбец
1
4
что получится?
0
Марат_09
5 / 5 / 1
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 21:57 #6
Получится вектор длины 3! Если умножить vector * Matrix!! А то, что операции над матрицами не коммутативны , думаю объясняют еще в классе 10!!!

Добавлено через 1 минуту
Ответ на ваш пример 17 22 27!
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 21:59 #7
у вас был курс линейной алгебры?
0
Марат_09
5 / 5 / 1
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 21:59 #8
http://www.math-pr.com/matr_mul_3.php

Добавлено через 21 секунду
можете проверить!
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:03 #9
Цитата Сообщение от Марат_09 Посмотреть сообщение
можете проверить!

Не по теме:

0
MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
19.06.2013, 22:05 #10
Цитата Сообщение от Thinker Посмотреть сообщение
задача имеет смыл только для квадратных матриц!
Почему?

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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
int main() {
  srand(time(0));
  setlocale(0, "");
  
  int n, m;
  
  std::cout << "n = ";
  std::cin >> n;
  std::cout << "m = ";
  std::cin >> m;
  
  int *matrix = new int[n*m];
  int *vec = new int[m];  
  
  std::cout << "Матрица:" << std::endl;
  for(int i = 0; i != n; ++i) {
    for(int j = 0; j != m; ++j) {
      *(matrix + i * m + j) = 1 + rand() % 5;
      std::cout << std::setw(4) << *(matrix + i * m + j);
    }
    std::cout << std::endl;
  }
  
  std::cout << "\nВектор:" << std::endl;
  for(int j = 0; j != m; ++j) {
    *(vec + j) = 1 + rand() % 5;
    std::cout << std::setw(4) << *(vec + j) << std::endl;
  }
  
  int *result_vec = new int[n];
    
  std::cout << "\nПроизведение матрицы на вектор:" << std::endl;
  for(int i = 0; i != n; ++i) {
    *(result_vec + i) = 0;
    for(int j = 0; j != m; ++j) {
      *(result_vec + i) += *(matrix + i * m + j) * *(vec + j);
    }
    std::cout << *(result_vec + i) << std::endl;
  }
  
  delete[] vec;
  delete[] matrix;
  delete[] result_vec;
  
  return 0;
}
0
Миниатюры
в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А  
MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
19.06.2013, 22:07 #11
ну т.е. матрица(3x5) и вектор (5x1) - результат умножения (3x1)
1
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:07 #12
MarVaL, вектор это столбец исходной матрицы, смотрите задание
0
Марат_09
5 / 5 / 1
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 22:07 #13
Ты че прикалуешься или гонишь?? У тебя вектор транспонированный 2Х1, умножаем на матрицу 2Х3 получаешь вектор 3Х1! Я тебе написал, что операции над матрицами не коммутируют! У тебя не написано в задании , умножение с обоих сторон! А написано вырезать вектор и умножить на саму матрицу. Если ты проходил курс линейной алгебры, как ты выразился, то догонишь, что надо умножать вектор на матрицу, а не матрицу на вектор! Разберись сначало с заданием и пойму, что от тебя требуется!
1
MarVaL
С++ Beginner
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
19.06.2013, 22:23 #14
Цитата Сообщение от Thinker Посмотреть сообщение
MarVaL, вектор это столбец исходной матрицы, смотрите задание
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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
int getIndex(int *matrix, int n, int m) {
  int index = 0;
  for(int j = 0; j != m; ++j) {
    for(int i = 0; i != n; ++i) {
      if(*(matrix + i * m + j) < 0)
        break;
      index = j;
      return index;
    }
  }
  return index;
}
 
 
int main() {
  srand(time(0));
  setlocale(0, "");
  
  int n, m;
  
  std::cout << "n = ";
  std::cin >> n;
  std::cout << "m = ";
  std::cin >> m;
  
  int *matrix = new int[n*m];
  int *vec = new int[n];  
  
  std::cout << "Матрица:" << std::endl;
  for(int i = 0; i != n; ++i) {
    for(int j = 0; j != m; ++j) {
      *(matrix + i * m + j) = 1 + rand() % 5;
      std::cout << std::setw(4) << *(matrix + i * m + j);
    }
    std::cout << std::endl;
  }
  
  int index = getIndex(matrix, n, m);
  std::cout << "Первый столбец без отрицательных элементов:" << std::endl;
  for(int i = 0; i != n; ++i) {
    *(vec + i) =  *(matrix + i * m + index);
    std::cout << std::setw(4) << *(vec + i) << std::endl;
  }
  
  int *result_vec = new int[m];
    
  std::cout << "\nПроизведение вектора на матрицу" << std::endl;
   for(int j = 0; j != m; ++j) {
    *(result_vec + j) = 0;
    for(int i = 0; i != n; ++i) {
      *(result_vec + j) += *(vec + i) * *(matrix + i * m + j);
    }
    std::cout << *(result_vec + j) << std::endl;
  }
  
  delete[] vec;
  delete[] matrix;
  delete[] result_vec;
  
  return 0;
}
1
Миниатюры
в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А  
Thinker
19.06.2013, 22:26     в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А
  #15

Не по теме:

хорошо, согласен, не стал столбец транспонировать, вот и ступил, мой косяк...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2013, 22:26
Привет! Вот еще темы с ответами:

Заполнить матрицу произвольного размера с клавиатуры. найти в матрице столбец с минимальным значением произведения элементов - C++
Заполнить матрицу произвольного размера с клавиатуры. найти в матрице столбец с минимальным значением произведения элементов

Найти столбец с содержащий наибольшее количество кратных 3 элементов, и поменять его местами со столбцом, имеющим тот же номер - C++
Заполнить двумерный числовой массив А(6, 6) целыми числами. Найти столбец с содержащий наибольшее количество кратных 3 элементов, и...

Найти столбец содержащий минимальный элемент. Умножить элементы данного столбца на максимальный элемент - C++
30. В матрице А(8,8) найти столбец содержащий минимальный элемент. Умножить элементы данного столбца на максимальный элемент.

В матрице К размером m*n найти в каждом столбце произведение отрицательных элементов и количество нулевых элементов в матрице - C++
В матрице К размером m*n найти в каждом столбце произведение отрицательных элементов и количество нулевых элементов в матрице. Ребят,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2013, 22:26
Ответ Создать тему
Опции темы

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