0 / 0 / 0
Регистрация: 18.11.2019
Сообщений: 2
1

Вычислить сумму отрицательных элементов столбца, в котором находится максимальный элемент матрицы

18.11.2019, 06:46. Показов 2673. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с задачей (занимаюсь решениями задач с++ неделю только)
как можно подробнее объясняйте если не сложно:

Сформировать двумерный массив E размером N x 7 (N – количество строк, равное предпоследней цифре номера студенческого билета +2 ; 7 – количество столбцов) с помощью генератора случайных чисел и вывести элементы массива. Вычислить сумму отрицательных элементов столбца, в котором находится максимальный элемент матрицы E. Вывести полученную сумму и номер столбца.

Какие у меня проблемы возникли:

1) при вводе значения n = 0, у меня ломается номер столбца который мне нужен и рандомные значения одинаковые в каждом столбце

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
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <clocale>
#include <math.h> 
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{    
        setlocale(0, "");
        int n;
        cout << "Введите n: " << endl;
        cin >> n;
        int i, j, max, stl;
        int arr[7][n];
        const int size=7;
        srand(time(0));
        for (i = 0; i < 7; i++)//столбцы
        for (j = 0; j < n + 2; j++){//строки
            arr[i][j] = rand() % 201 - 100;
        }
        
        cout << "\nВаш массив: " << endl;
 
        for (i = 0; i < 7; i++) {
        for (j = 0; j < n + 2; j++) {
                cout.width(3); //отступ
            std::cout << arr[i][j];
     }
     std::cout << std::endl; //нужно чтобы выводил массив в виде матрицы
    }
        max = arr[0][0];
         for (i = 0; i < 7; i++)
   {
      for (j = 0; j < n + 2; j++)
      {
         if (arr[i][j]>max)
         {
            max=arr[i][j];
            stl=j+1;
         }
      }
   }
        cout << "Номер столбца: " << stl << endl;
        cout << "Самый большой элемент: " << max << endl;
        
        return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2019, 06:46
Ответы с готовыми решениями:

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

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

Найти сумму элементов столбца матрицы, в котором находится максимальный элемент
дан двумерный массив найти сумму элементов столбца в котором находится максимальный элемент

Замена отрицательных элементов матрицы среднеарифметическим значением того столбца, в котором элемент находится
Дана матрица А(8×8), элементами которой являются положительные и отрицательные целые числа,...

3
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,738
18.11.2019, 07:59 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
int main()
{    
       // setlocale(0, "");
        int n;
        cout << "Введите n: " << endl;
        cin >> n;
        int i, j, max, stl, sum=0;
        int arr[7][n+2];
        const int size=7;
        srand(time(0)); 
        cout << "\nВаш массив: " << endl;
        for (i = 0; i < 7; i++){        //столбцы
        for (j = 0; j < n + 2; j++){    //строки
            arr[i][j] = rand() % 201 - 100; 
            cout.width(3);              //отступ
            std::cout << arr[i][j];
        }
        std::cout << std::endl;         //нужно чтобы выводил массив в виде матрицы
    }
   max = arr[0][0];
   for (i = 0; i < 7; i++)
   {
      for (j = 0; j < n + 2; j++)
      {
         if (arr[i][j]>max)
         {
            max=arr[i][j];
            stl=j;
         }
      }
   }
        cout << "Номер столбца: " << stl+1 << endl;
        cout << "Самый большой элемент: " << max << endl;
 
      for (i = 0; i < 7; i++)
      {
         if (arr[i][stl]< 0)
         {
            sum+=arr[i][stl];
         }
      }
   cout << "Сумма отр элементов " <<stl+1<<" столбца : " << sum << endl;      
        return 0;
}
1
0 / 0 / 0
Регистрация: 18.11.2019
Сообщений: 2
18.11.2019, 08:11  [ТС] 3
спасибо большое
0
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.11.2019, 04:52 4
Цитата Сообщение от marat_miaki Посмотреть сообщение
for (i = 0; i < 7; i++)
      {
         if (arr[i][stl]< 0)
ошибочно (количество строк N)

Mikotoaa, marat_miaki Вы наверное не разобрались, что требуется найти число
Цитата Сообщение от Mikotoaa Посмотреть сообщение
равное предпоследней цифре номера студенческого билета + 2
нужно ввести номер студенческого билета, найти предпоследнюю цифру и к ней прибавить 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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand(time(0));
    int n, N, M=7, imax=0, jmax=0, k=0;
    
    do
    {
    cout << "number of ticket="; cin >> n;
    if (n<10) cout << "number > 9 !!! Repeat please...\n";
    }
    while (n<10);
        
    N=n/10%10+2;    
        
      double **E = new double*[N], sum=0.; 
    for (int i = 0; i < N; i++)
       E[i]=new double[M];
       
    cout << "Matrix " << N << "x" << M << ":\n";        
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            E[i][j]=rand()%19 - 9;            
            if (E[i][j]>E[imax][jmax]) {imax=i;jmax=j;}
            cout << setw(2) << E[i][j] << " ";
        }
    cout << "\n";
    }
        
    for (int i = 0; i < N; i++)        
        if (E[i][jmax]<0.) {k=1;sum+=E[i][jmax];}
        
    cout << "Column: " << jmax+1 << "\n";    
    if (k) cout << "Sum negative = " << sum << "\n";
    else cout << "Negative elements are absent\n";
    
    for (int i = 0; i < N; i++)
    delete[]E[i];
    delete[]E;     
system("pause"); 
return 0;
}
0
19.11.2019, 04:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2019, 04:52
Помогаю со студенческими работами здесь

Вычислить сумму элементов того столбца двумерного массива, в котором находится наибольший элемент
Вычислить сумму элементов того столбца двумерного массива,в котором находится наибольший...

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

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

Найти сумму элементов столбца и строки матрицы на пересечении которых находится максимальный элемент
дано целая квадратная матрица порядка n. Найти сумму элементов столбца и строки матрицы на...

Найти сумму элементов того столбца массива, в котором расположен максимальный элемент матрицы
найти сумму элементов того столбца массива а (3,3), в котором расположен максимальный элемент...

Найти сумму отрицательных элементов главной диагонали матрицы, произведение элементов 3-го столбца, максимальный элемент 1-й строки
помогите составить программу на QBasic! дана матрица : -12; 1; 2; -21; 11; -14; 13; 8; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru