Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 01.10.2010
Сообщений: 49

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

12.10.2010, 10:12. Показов 4434. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В квадратной матрице 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]);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2010, 10:12
Ответы с готовыми решениями:

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

В квадратной матрице найти сумму модулей элементов в строках, содержащих хотя бы один отрицательный элемент; определить номер 1ой строки с 0-ым элем-о
Дана целочисленная квадратная матрица. 1) Найти сумму модулей элементов в строках, содержащих хотя бы один отрицательный элемент. 2)...

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

24
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.10.2010, 15:12
Студворк — интернет-сервис помощи студентам
Предположим, i_ - индекс строки, которую надо переписать. Тогда вы в новый массив записываете так:

C
1
2
for (j = 0; j < n; j++)
    b[j] = a[i_][j];
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
12.10.2010, 15:23
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;
}
меняйте свою матрицу...
0
0 / 0 / 1
Регистрация: 01.10.2010
Сообщений: 49
12.10.2010, 15:33  [ТС]
А почему нельзя сделать так, как я начал?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.10.2010, 15:34
Да почему нельзя, можно. Вам просто предлагают разные способы решения задачи, а вы уж сами выберите.
0
0 / 0 / 1
Регистрация: 01.10.2010
Сообщений: 49
12.10.2010, 17:39  [ТС]
Тогда, я пожалуй останусь на первом решении

Добавлено через 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;
}

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2010, 17:39

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

В заданной квадратной матрице провести манипуляции со строкой, номер которой задан пользователем с клавиатуры
пользователь указывает номер строки условие: 0&gt;1(*10) - где i введенное пользователем число else *5 вопрос как вводить строку. ...

Определить номер строки и номер столбца матрицы, на пересечении которых находятся требуемые элементы
В двумерном массиве определить номер строки и номер столбца, на пересечении которых находятся требуемые элементы массива: 1) Последний...

Для каждой заданной матрицы определить местоположение (номер строки и номер столбца) минимального элемента
Даны массивы А, В, С. Для каждого определить местоположение (номер строки и номер столбца) минимального элемента.

Найти максимальное значение в матрице и номер его столбца и строки
Дана матрица размером N*M. Напишите программу, определяющую максимальное значение в матрице и номер его столбца и строки.Ввод с...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru