Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 15:16   #1
Manowarm
 
Регистрация: 08.05.2011
Сообщений: 6
Сообщение с++

" С помощью датчика случайных чисел сформулировать матрицу T[5][8].вывести ее на экран.Сформулировать одномерные массивы из :
Сумм ненулевых элементов каждой строки;
сумм ненулевых элементов каждого столбца;
максимальных элементов каждого столбца
Все полученые массивы вывести на экран"
Manowarm вне форума Ответить с цитированием
Старый 08.05.2011, 17:19   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

вот первое задание, остальное - сам:

Код:
#include <stdlib.h>
#include <time.h>

#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>

#include <locale>

struct summator
{
	template <typename T, size_t N>
	T operator()(const T (&arr)[N]) const
	{
		return std::accumulate(arr, arr + N, T());
	}
};

template <typename T, size_t Cols, size_t Rows>
T (&sum(const T (&m)[Cols][Rows], T (&arr)[Cols]))[Cols]
{
	std::transform(m, m + Cols, arr, summator());
	return arr;
}

struct rng
{
	int operator()() const
	{
		return rand() % 10;
	}
};

template <typename T, size_t Cols, size_t Rows>
T (&fill(T (&m)[Cols][Rows]))[Cols][Rows]
{
	std::generate(&m[0][0], &m[0][0] + Cols * Rows, rng());
	return m;
}

template <typename T, size_t N>
std::ostream& operator<<(std::ostream& os, const T (&arr)[N])
{
	std::copy(arr, arr + N, std::ostream_iterator<T>(os, " "));
	return os;
}

template <typename T, size_t Cols, size_t Rows>
std::ostream& operator<<(std::ostream& os, const T (&m)[Cols][Rows])
{
	for (const T (*it)[Rows] = m; it != m + Cols; ++it)
		os << *it << std::endl;

	return os;
}

int main()
{
	srand((unsigned) time(NULL));
	setlocale(LC_ALL, "");

	int m[5][8] = {{0}};
	std::cout << fill(m) << std::endl;

	int result[5] = {0};
	std::cout << sum(m, result) << std::endl;

	return 0;
}
Проверка: http://codepad.org/x3K7Ze8I
Rififi вне форума Ответить с цитированием
Старый 30.05.2011, 19:47   #3
Manowarm
 
Регистрация: 08.05.2011
Сообщений: 6
По умолчанию http://calculator-online.org/s/kalkulyator/

http://calculator-online.org/s/kalkulyator/
Manowarm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск