Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 15.05.2014, 18:15   #1 (permalink)
olok07
Новичок
 
Регистрация: 15.05.2014
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Двумерные массивы в С++

пытаюсь разобраться в этой задаче
#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;
}
}

Вот эта часть кода непонятна , как вообще в цифрах она выражается
//делаем проходы столько раз, сколько строк в массиве
for(int N = 0; N < column - 1; N++)
{
result = row * 30;
olok07 вне форума   Ответить с цитированием

Старый 15.05.2014, 18:15
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее на форуме создавалось что то аналогично

Двумерные массивы
Двумерные массивы и процедуры PASCAL

Старый 15.05.2014, 22:59   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Ну хорошо, что разбираться пытаетесь!
У вас есть какие-то вопросы по ней ?
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:15.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.