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

В квадратной матрице A[N][N] определить номер столбца... - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
12.10.2010, 10:12     В квадратной матрице A[N][N] определить номер столбца... #1
В квадратной матрице A[N][N] определить номер столбца матрицы, имеющего наибольшую сумму элементов. Поменять этот столбец со строкой, имеющей наименьшую сумму элементов.

Помогите, пожалуйста, решить данную задачу. Двумерный массив вводить через (нас так к сожалению учат...):
C++
1
2
3
4
5
6
7
8
9
const int N1=10;
             M1=10;
int a[N1][M1],i,j,n,m;
printf("input size: ");
scanf("%d%d",&n,&m);
printf("input elements: ");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 10:12     В квадратной матрице A[N][N] определить номер столбца...
Посмотрите здесь:

В квадратной матрице определить наименьшие элементы каждого рядка C++
Двумерные массивы. Определить номер строки и номер столбца, на пересечении которых находятся требуемые элементы массива: C++
определить номер столбца матрицы с минимальным количеством отрицательных элементов и прибавить значения этого столбца к соответствующим элементам всех C++
C++ В квадратной матрице найти сумму модулей элементов в строках, содержащих хотя бы один отрицательный элемент; определить номер 1ой строки с 0-ым элем-о
C++ Определить номер столбца квадратной матрицы, сумма элементов которой максимальна
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.10.2010, 15:12     В квадратной матрице A[N][N] определить номер столбца... #21
Предположим, i_ - индекс строки, которую надо переписать. Тогда вы в новый массив записываете так:

C
1
2
for (j = 0; j < n; j++)
    b[j] = a[i_][j];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.10.2010, 15:23     В квадратной матрице A[N][N] определить номер столбца... #22
wertrix, в придачу к матрице MATRIX[N][N] создайте два массива - один COLUMNS_SUM[N] второй ROWS_SUM[N]. В первый выписывайте суммы столбцов, во второй - суммы строк, ищите индекс максимального значения в массиве сумм столбцов и индекс минимального значения в массиве сумм строк, а потом вот таким примерно циклом
C++
1
2
3
4
5
for ( int i = 0; i < N; ++i ){
  int tmp = MATRIX[minRowIndex][i];
  MATRIX[minRowIndex][i] = MATRIX[i][maxColumnIndex];
  MATRIX[i][maxColumnIndex] = tmp;
}
меняйте свою матрицу...
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
12.10.2010, 15:33  [ТС]     В квадратной матрице A[N][N] определить номер столбца... #23
А почему нельзя сделать так, как я начал?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.10.2010, 15:34     В квадратной матрице A[N][N] определить номер столбца... #24
Да почему нельзя, можно. Вам просто предлагают разные способы решения задачи, а вы уж сами выберите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2010, 17:39     В квадратной матрице A[N][N] определить номер столбца...
Еще ссылки по теме:

C++ В квадратной матрице найти номер первого отрицательного элемента в строке и составить из них массив.
В матрице целых чисел размером 3x7 определить номер столбца, который содержит наименьший элемент C++
В целочисленной матрице найти номер столбца с минимальной суммой элементов C++

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

Или воспользуйтесь поиском по форуму:
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
12.10.2010, 17:39  [ТС]     В квадратной матрице A[N][N] определить номер столбца... #25
Тогда, я пожалуй останусь на первом решении

Добавлено через 55 минут
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int main ()
{
    const int
        N1 = 10,
        M1 = 10,
        N2 = 10;
    int a[N1][M1],i,j,n,m,sum1=0,sum2=0,maxsum=0,minsum=0,i_,j_;
    int b[N2];
    
    printf ("input size: ");
    scanf ("%d%d",&n,&m);
    
    printf ("input elements:\n");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf ("%d",&a[i][j]);
    
    for (j = 0, sum1 = 0, maxsum = 0, j_ = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
            sum1 += a[i][j];
 
        if (sum1 > maxsum)
        {
            maxsum = sum1;
            j_ = j+1;
        }
        sum1 = 0;
    }
 
    for (j = 0; j<n; j++)
        minsum+=a[0][j];
    
    for (i = 0, sum2 = 0, i_ = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            sum2 += a[i][j];
 
        if (sum2 <= minsum)
        {
            minsum = sum2;
            i_ = i + 1;
        }
        sum2 = 0;
    }
 
    printf ("i_min = %d\nj_max = %d",i_,j_);
 
    
    for (j = 0; j < n; j++)
        b[j] = a[(i_)-1][j];
 
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            a[(i_)-1][j]=a[i][(j_)-1];
 
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            a[i][(j_)-1]=b[j];
    
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            printf ("\n a: %d",a[i][j]);
 
    getch ();
 
    return 0;
}
Вот, что в итоге у меня получилось, но в последних циклах есть где-то ошибка, потом что программа выводит не тот массив. Подскажите, где?

Добавлено через 1 час 4 минуты
Ура, я нашел ошибки Всем огромное спасибо, кстати если кому интересно то рабочая версия программы вот:

Не по теме:

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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int main ()
{
    const int
        N1 = 10,
        M1 = 10,
        N2 = 10;
    int a[N1][M1],i,j,n,m,sum1=0,sum2=0,maxsum=0,minsum=0,i_,j_;
    int b[N2];
    
    printf ("input size: ");
    scanf ("%d%d",&n,&m);
    
    printf ("input elements:\n");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf ("%d",&a[i][j]);
    
    for (j = 0, sum1 = 0, maxsum = 0, j_ = 0; j < m; j++)
    {
        for (i = 0; i < n; i++)
            sum1 += a[i][j];
 
        if (sum1 > maxsum)
        {
            maxsum = sum1;
            j_ = j+1;
        }
        sum1 = 0;
    }
 
    for (j = 0; j<n; j++)
        minsum+=a[0][j];
    
    for (i = 0, sum2 = 0, i_ = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            sum2 += a[i][j];
 
        if (sum2 <= minsum)
        {
            minsum = sum2;
            i_ = i + 1;
        }
        sum2 = 0;
    }
 
    printf ("i_min = %d\nj_max = %d",i_,j_);
 
    
    for (j = 0; j < n; j++)
        b[j] = a[(i_)-1][j];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)  
        a[(i_) - 1][j]=a[i][(j_) - 1];
 
    for (j = 0, i = 0; j < n, i < n; j++, i++)
        a[i][(j_)-1]=b[j];
 
    printf("output array: \n");
 
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            printf ("%d\t",a[i][j]);
 
    getch ();
 
    return 0;
}

Yandex
Объявления
12.10.2010, 17:39     В квадратной матрице A[N][N] определить номер столбца...
Ответ Создать тему
Опции темы

Текущее время: 13:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru