Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1418
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1191
∙ повысить рейтинг »
Micren
Статус: Бакалавр
Рейтинг: 1097
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1429
Дата выхода:26.11.2009, 18:00
Администратор рассылки:Dr_Andrew, Старший модератор
Подписчиков / экспертов:676 / 182
Вопросов / ответов:1 / 1
IRC-канал по теме:#C

Вопрос № 174403: Здравствуйте уважаемые эксперты, помогите пожалуйста с написанием программы по матрицам. Реализовать следующее преобразование матрицы : в выходную матрицу передать столбцы исходной матрицы с четными номерами 1 2 3 4 -> 2 4...



Вопрос № 174403:

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

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

Отправлен: 21.11.2009, 16:16
Вопрос задал: Animan, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Micren, Бакалавр :
Здравствуйте, 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<<mess age<<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

----------------------------------------------

Ответ отправил: Micren, Бакалавр
Ответ отправлен: 21.11.2009, 18:08

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256765 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.11 от 17.11.2009

    В избранное