С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 8

Отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных

29.04.2014, 17:35. Показов 1483. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите, пожалуйста найти ошибку.
Нужно создать двумерный массив, размером 5 х 7 (пять строк, семь столбцов). Заполнить его случайно целыми числами, в районе от 0 до 30. Вывести получившийся массив на экран. Затем нужно отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных. И так далее, по возрастанию.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void initMatrix(int[][7], const int, const int);
void replaceColumn(int[][7], const int, int, int);
void printMatrix(int[][7], const int, const int);
   
int main()
{
    const int column = 5, row = 7;
    int matrix[column][row];
    int counter, result, columnMin;
    
    srand(time(NULL));
    
   
    initMatrix(matrix, column, row);
    cout << "\nNoSorted array" << endl << endl;
    printMatrix(matrix, column, row);
 
    //делаем проходы столько раз, сколько строк в массиве
    for(int N = 0; N < column - 1; N++)
    {
        result = row * 30;
        
        //анализируем массив и находим строку,
        //сумма элементов которой минимальная
        for(int i = N; i < column; i++)
        {
            //обнуляем счетчик суммы элементов строки
            counter = 0;
            
            //проходим по элементам данной строки
            //и считаем сумму
            for(int j = 0; j < row; j++)
                counter += matrix[i][j];
            
            //result в итоге будет хранить значение минимальной суммы
            //columnMin будет хранить значение строки, в которой
            //была найдена минимальная сумма
            if(result > counter)
            {
                result = counter;
                columnMin = i;
            }
        }
        
        replaceColumn(matrix, row, N, columnMin);
    }
    
    //печатаем отсортированный массив
    cout << "\nSorted array" << endl << endl;
    printMatrix(matrix, column, row);
    
    return 0;
}
   
//инициализация двумерного массива
void initMatrix(int matrix[][7], const int column, const int row)
{
    for(int i = 0; i < column; i++)
        for(int j = 0; j < row; j++)
            matrix[i][j] = rand() % 30;
}
   
//меняем строки массива местами
void replaceColumn(int matrix[][7], const int row, int N, int columnMin)
{
    int buffer[row];
    
    for(int j = 0; j < row; j++)
    {
        buffer[j] = matrix[columnMin][j];
        matrix[columnMin][j] = matrix[N][j];
        matrix[N][j] = buffer[j];
    }
}
   
//печать двумерного массива
void printMatrix(int matrix[][7], const int column, const int row)
{
    for(int i = 0; i < column; i++)
    {
        for(int j = 0; j < row; j++)
            cout << setw(3) << matrix[i][j];
        
        cout << endl;
    }
}
И все кажется правильным, но компилятор выдает "error C2057: требуется константное выражение"
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2014, 17:35
Ответы с готовыми решениями:

Отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных
Нужно создать двумерный массив, размером 5 х 7 (пять строк, семь столбцов). Заполнить его случайно целыми числами, в районе от 0 до 30....

В матрице переставьте строки так, чтобы сумма элементов главной диагонали была максимальна
помогите пожалуйста! осталось решить только ее! в квадратном массиве N*N переставьте строки так, чтобы сумма элементов главной...

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

2
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
29.04.2014, 17:52
А вот не прокатит такое!
Сделайте вот так и будет счастье.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//меняем строки массива местами
void replaceColumn(int matrix[][7], const int row, int N, int columnMin)
{
int* buffer = new int[row];
 
for(int j = 0; j < row; j++)
{
buffer[j] = matrix[columnMin][j];
matrix[columnMin][j] = matrix[N][j];
matrix[N][j] = buffer[j];
}
delete []buffer;
}
1
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 8
30.04.2014, 13:24  [ТС]
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2014, 13:24
Помогаю со студенческими работами здесь

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

Переставить элементы массива так, чтобы в начале шла группа элементов, которые больше первого элемента
Дан одномерный массив. Переставить элементы массива так, чтобы в начале шла группа элементов, которые больше первого элемента, затем сам...

Выведите последовательность чисел так, чтобы максимальная сумма двух рядом стоящих чисел была как можно меньше
Выведите в строку через пробел последовательность натуральных чисел от 1 до n в таком порядке, чтобы максимальная сумма двух рядом стоящих...

Переставить каждую пару строк матрицы таким образом, чтобы первой была строка с меньшей суммой элементов
Дана матрица размером 12х4. В прямоугольной матрице, имеющей чет-ное количество строк, переставить каждую пару строк (1,2)(3,4) и т.д....

Удалить из массива некоторые элементы так, чтобы сумма оставшихся была кратна 600
решаю олимп. задачу, вообщем самое сложное в задаче был ввод данных, но вот я запоролся в другом месте... вообщем у меня получился массив...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru