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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 7710
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2644
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2350
∙ повысить рейтинг »

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

Номер выпуска:1653
Дата выхода:10.04.2011, 14:00
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:317 / 186
Вопросов / ответов:1 / 1

Вопрос № 182719: Здравствуйте! Уважаемые эксперты помогите написать 2 программы на С++ желательно в визуале (ну или в dev C++). Заранее спасибо! дан массив 5х5 для нечётного N (матрица) пощитать сумму диаганалей i=j. m[n][n] n=5. 1) по индексам (char)


Вопрос № 182719:

Здравствуйте! Уважаемые эксперты помогите написать 2 программы на С++ желательно в визуале (ну или в dev C++). Заранее спасибо!

дан массив 5х5 для нечётного N (матрица)
пощитать сумму диаганалей i=j. m[n][n] n=5.
1) по индексам (char)
2)*m по адресам (char*)

Отправлен: 04.04.2011, 20:34
Вопрос задал: Посетитель - 369626 (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает Micren (Профессор) :
Здравствуйте, Посетитель - 369626!
Программа. C++. Компилировал GCC.
Код:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <locale>

using namespace std;

// Тип данных. По условию char
typedef char data_t;

// Размерность матрицы
const size_t DIM = 5;

// Интервал значений для генерации матрицы
const data_t MIN = -50;
const data_t MAX = 50;

// Генерация значений матрицы

template<size_t DIM>
void fillMatrix(data_t(&matrix)[DIM][DIM])
{
size_t size = DIM*DIM;
data_t *arr = reinterpret_cast<data_t*> (matrix);
while (size--)
{
*arr++ = static_cast<data_t> (static_cast<double> (rand()) / RAND_MAX * (MAX - MIN) + MIN);
}
}

// Печать значений матрицы

template<size_t DIM>
void printMatrix(const char* const msg, const data_t(&matrix)[DIM][DIM])
{
cout << msg << endl;
for (size_t row = 0; row < DIM; ++row)
{
for (size_t col = 0; col < DIM; ++col)
{
cout << setw(4) << static_cast<int> (matrix[row][col]) << ' ';
}
cout << endl;
}
}

// Сумма 1м способом

template<size_t DIM>
int diagSum1(const data_t(&matrix)[DIM][DIM])
{
int sum = 0;
for (size_t i = 0; i < DIM; ++i)
{
sum += matrix[i][i];
}
return sum;
}

// Сумма 2м способом

template<size_t DIM>
int diagSum2(const data_t(&matrix)[DIM][DIM])
{< br> int sum = 0;
size_t size = DIM;
const data_t * arr = reinterpret_cast<const data_t*> (matrix);
while (size--)
{
sum += *arr;
arr += DIM + 1;
}
return sum;
}

int main()
{
locale::global(locale(""));
srand(time(0));

// Матрица
data_t m[DIM][DIM];

// Заполним матрицу
fillMatrix(m);

// Распечатать
printMatrix("Матрица:", m);

// Результат
cout << "Сумма по индексам:" << diagSum1(m) << endl
<< "Сумма по адресам:" << diagSum2(m) << endl;

#ifdef __WIN32
system("pause");
#endif

return 0;
}

Пример работы:
Код:
Матрица:
-49 31 16 39 -30
-2 14 12 -40 -2
-23 -7 18 7 19
-19 6 25 35 46
0 -7 -13 -5 -10
Сумма по индексам:8
Сумма по адресам:8

Ответ отправил: Micren (Профессор)
Ответ отправлен: 04.04.2011, 22:08
Номер ответа: 266542
Украина, Краматорск

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


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

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

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

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

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

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

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



    В избранное