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

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

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

Author24 — интернет-сервис помощи студентам
2. в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А
заранее спасибо, буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2013, 14:46
Ответы с готовыми решениями:

В матрице найти первый столбец, содержащий максимальное количество отрицательных элементов
В матрице найти первый столбец, содержащий максимальное количество отрицательных элементов, и...

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

Найти в матрице первый столбец, содержащий максимальное количество одинаковых элементов
Дана целочисленная матрица размера M х N. Найти номер первого из ее столбцов, содержащих...

В матрице поменять местами первый столбец и столбец, содержащий минимальное количество нечетных элементов
1) дана матрица размера m*n поменять местами столбцы 1 и столбец, содержащий минимальное количество...

14
5 / 5 / 2
Регистрация: 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
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 18:58 3
Цитата Сообщение от Марат_09 Посмотреть сообщение
надо будет отладить!
задача имеет смыл только для квадратных матриц!
0
5 / 5 / 2
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 21:50 4
в данном случае она может применяться для любого случая! Если хотите, то задавайте квадратную матрицу!
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 21:53 5
Цитата Сообщение от Марат_09 Посмотреть сообщение
в данном случае она может применяться для любого случая!
ну-ну, умножьте любой столбец матрица размера 2 на 3 на саму матрицу, например
матрица
1 2 3
4 5 6
и столбец
1
4
что получится?
0
5 / 5 / 2
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 21:57 6
Получится вектор длины 3! Если умножить vector * Matrix!! А то, что операции над матрицами не коммутативны , думаю объясняют еще в классе 10!!!

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

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

Не по теме:

O_o

0
С++ Beginner
120 / 120 / 77
Регистрация: 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;
}
Миниатюры
в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А  
0
С++ Beginner
120 / 120 / 77
Регистрация: 28.02.2013
Сообщений: 246
19.06.2013, 22:07 11
ну т.е. матрица(3x5) и вектор (5x1) - результат умножения (3x1)
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 22:07 12
MarVaL, вектор это столбец исходной матрицы, смотрите задание
0
5 / 5 / 2
Регистрация: 23.05.2013
Сообщений: 18
19.06.2013, 22:07 13
Ты че прикалуешься или гонишь?? У тебя вектор транспонированный 2Х1, умножаем на матрицу 2Х3 получаешь вектор 3Х1! Я тебе написал, что операции над матрицами не коммутируют! У тебя не написано в задании , умножение с обоих сторон! А написано вырезать вектор и умножить на саму матрицу. Если ты проходил курс линейной алгебры, как ты выразился, то догонишь, что надо умножать вектор на матрицу, а не матрицу на вектор! Разберись сначало с заданием и пойму, что от тебя требуется!
1
С++ Beginner
120 / 120 / 77
Регистрация: 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;
}
Миниатюры
в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А  
1
Thinker
19.06.2013, 22:26     в матрице А(n x m) найти первый столбец, не содержащий отрицательных элементов, и умножить его как вектор на матрицу А
  #15

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2013, 22:26

Добавить столбец в матрицу, содержащий сумму отрицательных элементов строк
Здравствуйте. Нужно добавить столбец, содержащий сумму отрицательных элементов строк в конец....

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

Умножить обратную матрицу на вектор-столбец
Есть код обратной матрицы для int и вектор-столбец int. Никак не могу придумать, как их...

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

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

Найти вектор B размером 4, содержащий сумму отрицательных элементов по столбцам матрицы
Дана матрица действительных чисел A размером 4×5. Используя операторы цикла и условный оператор,...


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

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