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

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

12.10.2010, 10:12. Показов 4436. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru