Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
5 / 5 / 1
Регистрация: 15.09.2016
Сообщений: 410
1

Умножение строк матрицы на значения строк(столбцов)

19.10.2019, 17:30. Показов 1454. Ответов 2
Метки нет (Все метки)

Здравствуйте! Есть задание. Выполнил большую часть.
1. Сформировал массив;
2. Нашел минимальное значение всего массива , минимальное значение каждой из строк, минимальное значение каждого из столбцов (массивы) tmp_minstolb[j] и tmp_minstrok[i].
3. Умножил значения массива исходного на минимальное значение всего массива, теперь необходимо умножить полученную преобразованную матрицу, умножив ее на минимальное значение каждой строки, а потом и столбца.

Вопрос следующего плана: не могу правильно сформировать код умножения по итерациям (по циклу) матрицы на одномерный массив (например, tmp_minstrok), уже и с условными операторами бился...не пойму такую мелочь. Код прилагаю.


Само задание звучит так:
Дана матрица действительных чисел размером 8х12. Преобразовать ее следующим образом:
а)умножить каждый элемент матрицы на минимальное значение собственной строки;
б)умножить каждый элемент матрицы на минимальное значение собственного столбца;
в)умножить каждый элемент матрицы на минимальное значение всей матрицы





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
110
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
void main()
{
      int i,j,n=8,m=12;
      float a[8][12],min;
      printf(" Matrica a:\n");
       for(i=0;i<n;i++)
       {   printf("\n");
           for(j=0;j<m;j++)
           {
            a[i][j]=0.005*rand();
            printf("%6.1f",a[i][j]);
           }
       }
 
 
         min=a[0][0];   //минимальное значение всей матрицы
              for(i=0;i<n;i++)
                 for(j=0;j<m;j++)
         {
              if(a[i][j]<min) min=a[i][j];
 
         }
         printf("\nMinimalnoe znachenye matricy a: %6.1f",min);
         //-----------------------------------------------------------
float tmp_minstolb[12]; // минимальные значения столбцов
    for (int j = 0; j < 12; j++)
    {
       float  min_stolb = a[0][j];
 
        for (int i = 0; i < 8; i++)
        {
            if ( min_stolb>a[i][j])
                 min_stolb = a[i][j];
 
        }
        tmp_minstolb[j] = min_stolb;
    }
    {
    printf("\nMinimalnii znachenye stolbzov matricy A:");
    printf("\n");
    for (int j = 0; j < 12; j++)  //массив минимальных значений столбцов на вывод
    {
    printf("%5.1f", tmp_minstolb[j]);
    }
    //-------------------------------------------------------------
    float tmp_minstr[8]; // минимальные значения строк
    for (int i = 0; i < 8; i++)
    {
       float  min_stroka = a[i][0];
 
        for (int j = 0; j < 12; j++)
        {
            if ( min_stroka>a[i][j])
                 min_stroka = a[i][j];
 
        }
        tmp_minstr[i] = min_stroka;
    }
    {
    printf("\nMinimalnii znachenye strok matricy A:");
 
    for (int i = 0; i < 8; i++)  //массив минимальных значений строк на вывод
    {
    printf("%5.1f", tmp_minstr[i]);
    }
 
    //----------------------------Матрица А с учетом умножения на минимальное значение массива.
    printf("\n");
    printf("\nMatrica A = Aij*min_matrica");
    printf("\n");
      for (i = 0; i<8; i++)  // цикл по строкам
  {
    for (j = 0; j<12; j++) // цикл по столбцам
    {
      a[i][j]=a[i][j]*min;
      printf("%5.1f",a[i][j]);
    }
  }
  //-----------------------------------------------------------------------------------------непонятно
    {  printf("\n");
    printf("\nMatrica A = Aij*min_stroka{i - sobstvennaya}");
  printf("\n");
 
 
  for (j = 0; j<12; j++) // цикл по столбцам
      { 
       for (i = 0; i<8; i++)  // цикл по строкам
         {   
             for (i = 0; i<8; i++)  // цикл по строкам массива
             {      
            
           a[i][j]=a[i][j]*tmp_minstr[i];
      printf("%5.1f",a[i][j]);
    }
  }
  }
 
           
    }
 
     getch();
    }
    }
}

Одна из моих попыток... получается непонятно что. (логика умножений не просматривается)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 printf("\n");
    printf("\nMatrica A = Aij*min_stroka{i - sobstvennaya}");
  printf("\n");
 
for (j = 0; j<12; j++) // цикл по столбцам
      { 
       for (i = 0; i<8; i++)  // цикл по строкам
         {
          if(a[i][0]=tmp_minstr[i])
           a[i][j]=a[i][j]*tmp_minstr[i];
          else
           {
           i++;
           }
      printf("%5.1f",a[i][j]);
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Умножение строк матрицы на значения строк(столбцов)  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2019, 17:30
Ответы с готовыми решениями:

Значения столбцов и строк в выбранном ряду матрицы поменять на противоположные
Привет,нужна подсказка.Пишу алгоритм.Есть какая-то матрица из 0 и 1 произвольного...

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

Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна заданной величине, и число таких строк.
Для матрицы из 6 строк и 5 столбцов отпечатать номера тех строк, сумма элементов которых кратна...

Элементы матрицы, значения которых превышают значения выражения , напечатать вместе с номерами их строк и столбцов
Добрый вечер!Написал программу, но она не работает. посмотрите пожалуйста. Задание прикрепил + n =...

2
5 / 5 / 1
Регистрация: 15.09.2016
Сообщений: 410
19.10.2019, 17:33  [ТС] 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
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
110
111
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
void main()
{
      int i,j,n=8,m=12;
      float a[8][12],min;
      printf(" Matrica a:\n");
       for(i=0;i<n;i++)
       {   printf("\n");
           for(j=0;j<m;j++)
           {
            a[i][j]=0.005*rand();
            printf("%6.1f",a[i][j]);
           }
       }
 
 
         min=a[0][0];   //минимальное значение всей матрицы
              for(i=0;i<n;i++)
                 for(j=0;j<m;j++)
         {
              if(a[i][j]<min) min=a[i][j];
 
         }
         printf("\nMinimalnoe znachenye matricy a: %6.1f",min);
         //-----------------------------------------------------------
float tmp_minstolb[12]; // минимальные значения столбцов
    for (int j = 0; j < 12; j++)
    {
       float  min_stolb = a[0][j];
 
        for (int i = 0; i < 8; i++)
        {
            if ( min_stolb>a[i][j])
                 min_stolb = a[i][j];
 
        }
        tmp_minstolb[j] = min_stolb;
    }
    {
    printf("\nMinimalnii znachenye stolbzov matricy A:");
    printf("\n");
    for (int j = 0; j < 12; j++)  //массив минимальных значений столбцов на вывод
    {
    printf("%5.1f", tmp_minstolb[j]);
    }
    //-------------------------------------------------------------
    float tmp_minstr[8]; // минимальные значения строк
    for (int i = 0; i < 8; i++)
    {
       float  min_stroka = a[i][0];
 
        for (int j = 0; j < 12; j++)
        {
            if ( min_stroka>a[i][j])
                 min_stroka = a[i][j];
 
        }
        tmp_minstr[i] = min_stroka;
    }
    {
    printf("\nMinimalnii znachenye strok matricy A:");
 
    for (int i = 0; i < 8; i++)  //массив минимальных значений строк на вывод
    {
    printf("%5.1f", tmp_minstr[i]);
    }
 
    //----------------------------Матрица А с учетом умножения на минимальное значение массива.
    printf("\n");
    printf("\nMatrica A = Aij*min_matrica");
    printf("\n");
      for (i = 0; i<8; i++)  // цикл по строкам
  {
    for (j = 0; j<12; j++) // цикл по столбцам
    {
      a[i][j]=a[i][j]*min;
      printf("%5.1f",a[i][j]);
    }
  }
 
  printf("\n");
    printf("\nMatrica A = Aij*min_stroka{i - sobstvennaya}");
  printf("\n");
 
 
 
       for (i = 0; i<8; i++)  // цикл по строкам
         {
            for (j = 0; j<12; j++) // цикл по столбцам
               { 
 
          if(a[i][0]=tmp_minstr[i])
           a[i][j]=a[i][j]*tmp_minstr[i];
          else
           {
           i++;
           }
            
      printf("%5.1f",a[i][j]);
     
    }
  }
    }
    getch();
    }
}
0
Миниатюры
Умножение строк матрицы на значения строк(столбцов)  
║XLR8║
1210 / 912 / 270
Регистрация: 25.07.2009
Сообщений: 4,371
Записей в блоге: 5
19.10.2019, 20:36 3
Цитата Сообщение от slavek777 Посмотреть сообщение
как решить этот нюанс?
1. Не выводить в консоль винды.
2. Взять размеры входных данных поменьше и отступы сделать больше.

slavek777, посмотри как люди код на С++ форматируют, а то это просто вырви глаз а не код, читабельность нулевая. Можешь начать с Google C++ Style Guide.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2019, 20:36

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

Для матрицы из 3 столбцов и 7 строк отпечатать номера тех строк, в которых третий элемент больше суммы двух
Для матрицы из 3 столбцов и 7 строк отпечатать номера тех строк, в которых третий элемент больше...

Из исходной таблицы в n строк и 6 столбцов нужно сделать таблицу-результат из кучи строк и 6 столбцов
Добрый вечер, учусь в универcитете, начал изучать макросы и подвернулась &quot;интересная&quot; задача -...

Умножение строк матрицы
Помогите пожалуйста Дана целочисленная квадратная матрица. Чётные строки матрицы умножать на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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