Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 18
1

Найти наибольшие элементы каждого из столбцов матрицы и их индексы

15.07.2012, 21:29. Просмотров 1193. Ответов 10
Метки нет (Все метки)

вот условие.
Дана квадратная матрица . Требуется записать в один из двух одномерных массивов наибольшие элементы каждого из столбцов, а в другой индексы наименьших элементов в строках.
Вот что пытался решить, когда начал вставлять printf для ввода данных стала не правильно работать, и нужно всё через шаблоны написать(
Помогите пожалуйста)

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
#include<windows.h>   
#include <stdio.h>
 
int main ()
{
SetConsoleOutputCP(1251);
    int n,m[100][100],i,j;
int a[100],b[100];
  
scanf ("%d",&n);
    for (i = 0; i<n;i++)
        for (j = 0; j<n;j++)
            
            scanf ("%d", &m[i][j]);
    for (i = 0; i<n;i++){
        a[i] = m[0][i];
        for (j = 0; j<n;j++)
            if (m[j][i]>a[i]) a[i] = m[j][i];
    }
    for (i = 0;i<n; i++)
        for (j = 1; j<n;j++)
            if (m[i][j]<m[i][b[i]]) b[i] = j;
    for (i = 0; i<n;i++)
        printf("%d ",a[i]);
    printf("\n");
    for (i = 0; i<n;i++)
        printf("%d ",b[i]);        
    printf("\n");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2012, 21:29
Ответы с готовыми решениями:

Найти наибольшие элементы нечетных столбцов матрицы
Дан массив А (N,M).Найти наибольшие элементы нечетных столбцов.

Найти наибольшие, отрицательные, элементы каждого столбца матрицы
Найти наибольшие, отрицательные, элементы каждого столбца матрицы Е(m,n) и переписать их в...

Найти наибольшие элементы каждого столбца матрицы Х(М,N) и записать их в массив Y
Найти наибольшие элементы каждого столбца матрицы Х(М,N) и записать их в массив Y

Найти наибольшие элементы каждого столбца матрицы и записать их в массив
Найти наибольшие элементы каждого столбца матрицы Y(7,8) и записать их в массив Z

10
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.07.2012, 21:49 2
Цитата Сообщение от Yura2 Посмотреть сообщение
if (m[i][j]<m[i][b[i]]) b[i] = j;
22 строка. Что здесь?
0
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 18
15.07.2012, 21:58  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
22 строка. Что здесь?
поиск элементов.
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.07.2012, 22:09 4
Цитата Сообщение от Yura2 Посмотреть сообщение
поиск элементов.
Что там за куча квадратных скобок?
0
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 18
15.07.2012, 22:19  [ТС] 5
Цитата Сообщение от alsav22 Посмотреть сообщение
Что там за куча квадратных скобок?
хм. а как нужно?
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.07.2012, 23:24 6
Цитата Сообщение от Yura2 Посмотреть сообщение
хм. а как нужно?
Ошибка в этой строке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (i = 0; i < n ; i++) //нахождение наименьших эл. в строках матрицы m[][]
                         //и запись индексов этих эл. в массив b[].  
{
   int temp_in = 0;
   int temp_m = m[i][0];
   for (j = 1; j < n; j++)
   {
       if (temp_m > m[i][j]) 
        {
            temp_m = m[i][j]; 
            temp_in = j;
        }
    }
    b[i] = temp_in;
}
1
1311 / 973 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
16.07.2012, 14:17 7
Я бы решил задачу вот так

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
#include <iostream>
#include <iomanip>
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    const int size = 4;
    int matrix[size][size] = { 14, 2, 67, 90, 
                               5, 26, 17, 88, 
                               96, 12, 14, 43, 
                               16, 23, 44, 3 };
 
 
    int array1[size]; 
    int array2[size]; 
    int max, min;  
    int index; 
    int i, j; 
 
    cout << "Исходная матрица " << endl; // выводим исходную матрицу
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++)  
        {
        if( j % size == 0) 
            cout << endl; 
        cout << setw(3) << matrix[i][j]; 
        } 
        cout << endl << endl;
 
 
    for ( i = 0; i < size; i++) // выявляем максимальные элементы в столбцах
    { 
        max = matrix[0][i];
        for ( j = 1; j < size; j++)  
        {
            if(max < matrix[j][i])  
                max = matrix[j][i];  
               array1[i] = max; 
        }
    }
 
    for ( i = 0; i < size; i++) // выводим максимальные элементы
        cout << "В столбце " << i+1 << " наибольший элемент " << array1[i] << endl;
    cout << endl;
 
    for ( i = 0; i < size; i++) // ищем индексы минимальных элементов в строках
    { 
        min = matrix[i][0];  
        index = 1;
        for ( j = 1; j < size; j++) 
           if(min > matrix[i][j]) 
            { 
                min = matrix[i][j]; 
                index = j+1; 
            } 
            
            array2[i] = index;
    }
 
        for ( i = 0; i < size; i++) // выводим их
            cout << "В строке " << i+1 << " индекс наименьшего элемента " << array2[i] << endl; 
}
1
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 18
16.07.2012, 20:30  [ТС] 8
Цитата Сообщение от alsav22 Посмотреть сообщение
Ошибка в этой строке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (i = 0; i < n ; i++) //нахождение наименьших эл. в строках матрицы m[][]
                         //и запись индексов этих эл. в массив b[].  
{
   int temp_in = 0;
   int temp_m = m[i][0];
   for (j = 1; j < n; j++)
   {
       if (temp_m > m[i][j]) 
        {
            temp_m = m[i][j]; 
            temp_in = j;
        }
    }
    b[i] = temp_in;
}
получается заменяем это if (m[i][j]<m[i][b[i]]) b[i] = j;
на то что вы скинули и всё..?
тогда ещё одна проблема почему после подключения printf и запуски проги меня выкидывает сразу? он ничего не хочет считать..

Добавлено через 49 секунд
Цитата Сообщение от David Sylva Посмотреть сообщение
Я бы решил задачу вот так

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
#include <iostream>
#include <iomanip>
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    const int size = 4;
    int matrix[size][size] = { 14, 2, 67, 90, 
                               5, 26, 17, 88, 
                               96, 12, 14, 43, 
                               16, 23, 44, 3 };
 
 
    int array1[size]; 
    int array2[size]; 
    int max, min;  
    int index; 
    int i, j; 
 
    cout << "Исходная матрица " << endl; // выводим исходную матрицу
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++)  
        {
        if( j % size == 0) 
            cout << endl; 
        cout << setw(3) << matrix[i][j]; 
        } 
        cout << endl << endl;
 
 
    for ( i = 0; i < size; i++) // выявляем максимальные элементы в столбцах
    { 
        max = matrix[0][i];
        for ( j = 1; j < size; j++)  
        {
            if(max < matrix[j][i])  
                max = matrix[j][i];  
               array1[i] = max; 
        }
    }
 
    for ( i = 0; i < size; i++) // выводим максимальные элементы
        cout << "В столбце " << i+1 << " наибольший элемент " << array1[i] << endl;
    cout << endl;
 
    for ( i = 0; i < size; i++) // ищем индексы минимальных элементов в строках
    { 
        min = matrix[i][0];  
        index = 1;
        for ( j = 1; j < size; j++) 
           if(min > matrix[i][j]) 
            { 
                min = matrix[i][j]; 
                index = j+1; 
            } 
            
            array2[i] = index;
    }
 
        for ( i = 0; i < size; i++) // выводим их
            cout << "В строке " << i+1 << " индекс наименьшего элемента " << array2[i] << endl; 
}
Спасибо конечно, но мы таких функций и библиотек не проходили, нужен максимально простой код...
0
1311 / 973 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
16.07.2012, 20:45 9
Это есть максимально простой код, #include <iomanip> чтобы форматировать вывод, можешь убрать и убрать setw.
0
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 18
16.07.2012, 20:59  [ТС] 10
Цитата Сообщение от David Sylva Посмотреть сообщение
Это есть максимально простой код, #include <iomanip> чтобы форматировать вывод, можешь убрать и убрать setw.
хм ладно, допустим это уберётся..
но матрицу должен вводить пользаватель с клавиатуры, а тут она задана..
C++
1
2
3
4
nt matrix[size][size] = { 14, 2, 67, 90, 
                               5, 26, 17, 88, 
                               96, 12, 14, 43, 
                               16, 23, 44, 3 };
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2012, 21:11 11
Заменяем вот это
for (i = 0;i<n; i++)
for (j = 1; j<n;j++)
if (m[i][j]<m[i][b[i]]) b[i] = j;
тем, что я скинул.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2012, 21:11

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

Найти наибольшие отрицательные элементы каждого столбца матрицы под главной диагональю
Найти наибольшие отрицательные элементы каждого столбца матрицы GE (n,n) под главной диагональю и...

Найти наибольшие, по абсолютной величине, элементы каждого столбца матрицы FB{m, m}, находящиеся над главной диагональю
Найти наибольшие, по абсолютной величине, элементы каждого столбца матрицы FB{m, m}, находящиеся...

Найти наибольшие элементы и их индексы массивов A(K) и B(L)
2.Найти наибольшие элементы и их индексы массивов A(K) и B(L).K&lt;=25;L&lt;=35

Суммировать наибольшие элементы столбцов матрицы
Помогите решить задачу : Дана матрица А(nxn). Получить x1xn+x2xn-1+…+xnx1, где xk – наибольшее...

Переписать наибольшие положительные элементы каждого столбца матрицы
Переписать наибольшие положительные элементы каждого столбца матрицы CX(m,n) в одномерный массив ...

Найти наибольшие элементы каждого столбца
Найти наибольшие элементы каждого столбца матpицы X(M, N) и записать их в массив Y.


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

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

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