Консультация № 174403
21.11.2009, 16:16
0.00 руб.
0 2 1
Здравствуйте уважаемые эксперты, помогите пожалуйста с написанием программы по матрицам.

Реализовать следующее преобразование матрицы : в выходную матрицу передать столбцы исходной матрицы с четными номерами 1 2 3 4 -> 2 4

Приложение:
Вот что получилось:

#include <stdio.h>
#include <iostream>
#define N 4

using namespace std;

int main(){
int arr[N][N];
int i, j;

/* заполнение массива */
for ( i = 0; i < N; i++ ){
for ( j = 0; j < N; j++ ){
printf("arr[%d][%d] = ", i, j);
scanf("%d", &arr[i][j]);
}
}

printf("\n-----------------------\n");
printf("\nPervonachalnaya matrica\n");
/* вывод в виде матрицы */
for ( i = 0; i < N; i++ )
for ( j = 0; j < N; j++ )
printf( ( j < (N - 1) ) ? "%d\t" : "%d\n", arr[i][j]);



printf("\n-----------------------\n");
printf("\nPosle\n");

for ( i = 0; i < N; i++ )
for ( j = 0; j < N; j++ )
{


if (j%2==0)
printf( (j < (N-1) ) ? "%d\t" : "%d\n", arr[i][j];
}


system("pause");
return 0;
}

Обсуждение

Неизвестный
21.11.2009, 17:51
общий
Animan:
Добрый вечер! Объявляем, формируем и печатаем выходную матрицу.
Код:

/*
Реализовать следующее преобразование матрицы :
в выходную матрицу передать столбцы исходной
матрицы с четными номерами 1 2 3 4 -> 2 4
*/

#include <stdio.h>
#include <iostream>
#define N 4

using namespace std;

int main(){
int arr[N][N];
/****************************/
/* объявим выходную матрицу */
/****************************/
int out[N][N/2];
int i, j;

/* заполнение массива */
for ( i = 0; i < N; i++ ){
for ( j = 0; j < N; j++ ){
printf("arr[%d][%d] = ", i, j);
scanf("%d", &arr[i][j]);
}
}

printf("\n-----------------------\n");
printf("\nPervonachalnaya matrica\n");
/* вывод в виде матрицы */
for ( i = 0; i < N; i++ )
for ( j = 0; j < N; j++ )
printf( ( j < (N - 1) ) ? "%d\t" : "%d\n", arr[i][j]);


/******************************/
/* формируем выходную матрицу */
/******************************/

for ( i = 0; i < N; i++ )
for ( j = 1; j < N; j+=2 )
out[i][j/2]=arr[i][j];

printf("\n-----------------------\n");
printf("\nPosle\n");

/******************************/
/* печатаем выходную матрицу */
/******************************/
for ( i = 0; i < N; i++ )
for ( j = 0; j < N/2; j++ )
printf( ( j < (N/2 - 1) ) ? "%d\t" : "%d\n", out[i][j]);

system("pause");
return 0;
}
Неизвестный
21.11.2009, 18:08
общий
это ответ
Здравствуйте, Animan.
Программа. C++. GCC.
Код:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

// Размерности матрицы
const size_t ROWS=5;
const size_t COLS=7;

// Заполняет матрицу случайными числами
template <class T,size_t Row,size_t Col>
void genMatrix(T (&matrix)[Row][Col])
{
T *item=reinterpret_cast<T*>(matrix);
const T *const end=reinterpret_cast<T*>(matrix)+Row*Col;
while(item!=end)
{
*item++=rand()%25;
}
}

// Печатает матрицу
template <class T,size_t Row,size_t Col>
void printMatrix(const char *const message,const T (&matrix)[Row][Col])
{
cout<<message<<endl;
for(size_t i=0;i<Row;++i)
{
for(size_t j=0;j<Col;++j)
{
cout<<setw(4)<<matrix[i][j]<<' ';
}
cout<<endl;
}
}

// Выбирает четные столбцы из src в dest
template <class T,size_t Row,size_t Col>
void selectEvenColumns(const T (&src)[Row][Col],T (&dest)[Row][Col/2])
{
for(size_t fromCol=1,toCol=0;toCol<Col/2;fromCol+=2,++toCol)
{
for(size_t row=0;row<Row;++row)
{
dest[row][toCol]=src[row][fromCol];
}
}
}

int main()
{
srand(static_cast<unsigned int>(time(0)));
// Матрицы
int srcMatrix[ROWS][COLS],destMatrix[ROWS][COLS/2];
// Заполним случайными числами
genMatrix(srcMatrix);
// Напечатаем
printMatrix("Исходная матрица:",srcMatrix);
// Выберем столбцы согласно условия
selectEvenColumns(srcMatrix,destMatrix);
// Напечатаем
printMatrix("Результирующая матрица:",destMatrix);
return 0;
}

Пример вывода:
Код:
----------------------------------------------
Исходная матрица:
7 20 1 2
13 22 11 12
1 12 24 21
6 21 3 14
24 8 3 9
Результирующая матрица:
20 2
22 12
12 21
21 14
8 9

----------------------------------------------
Program exited successfully with errcode (0)
Press the Enter key to close this terminal ...

EXECUTING:
/home/neo/projects/174403-2/Debug/src/174403
----------------------------------------------
Исходная матрица:
20 22 2 11 22 2 12
17 17 19 8 15 8 19
0 6 8 11 22 7 0
24 6 3 18 18 2 2
13 9 8 8 8 10 21
Результирующая матрица:
22 11 2
17 8 8
6 11 7
6 18 2
9 8 10

----------------------------------------------
Program exited successfully with errcode (0)
Press the Enter key to close this terminal ...

EXECUTING:
/home/neo/projects/174403-2/Debug/src/174403
----------------------------------------------
Исходная матрица:
16 22 0 8 13 6 3
8 21 8 18 3 23 23
12 7 16 22 23 20 0
22 20 0 6 15 2 11
1 7 7 17 4 7 2
Результирующая матрица:
22 8 6
21 18 23
7 22 20
20 6 2
7 17 7

----------------------------------------------
5
Форма ответа