Форум программистов, компьютерный форум CyberForum.ru

ввод матрицы с клавитауры - C++

Восстановить пароль Регистрация
 
tripleus
1 / 1 / 0
Регистрация: 22.12.2010
Сообщений: 29
08.03.2011, 02:38     ввод матрицы с клавитауры #1
Нужно реализовать ввод с клавиатуры
Код
#include <locale>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <numeric>
 
/*
        В прямоугольной матрице найти максимальное среднее арифметическое
        среди средних арифметических каждой строки матрицы
        и вычесть его из всех элементов матриц, кроме элементов одной заданной строки 
*/
 
template <typename T, size_t Rows>
struct avg : public std::unary_function<const T (&)[Rows], double>
{
        T operator()(const T (&arr)[Rows]) const
        {
                return std::accumulate(arr, arr + Rows, T()) / Rows;
        }
};
 
template <typename T, size_t Cols, size_t Rows>
void go(T (&m)[Cols][Rows])
{
        std::vector<T> v(Cols);
        std::transform(
                &m[0][0], &m[0][0] + Cols*Rows, &m[0][0],
                std::bind2nd(std::minus<T>(), *std::max_element(v.begin(),
                std::transform(m, m + Cols, v.begin(), avg<T, Rows>())))
                );
}
 
template <typename T, size_t Rows>
struct X : public std::unary_function<const T (&)[Rows], void>
{
        X(std::ostream& os) : os_(os) {}
        
        void operator()(const T (&arr)[Rows]) const
        {
                typedef std::ostream_iterator<T> O;
                std::copy(arr, arr+Rows, O(os_, "\t"));
                os_ << std::endl;
        }
 
        std::ostream& os_;
};
 
template <typename T, size_t Cols, size_t Rows>
std::ostream& operator<< (std::ostream& os, const T (&m)[Cols][Rows])
{
        std::for_each(m, m+Cols, X<T, Rows>(os));
        return os;
}
 
int main()
{
        setlocale(LC_ALL, "");
 
        double m[3][4] = {
                {1,2,3,4},
                {1,-2,-3,4},
                {-1,-2,3,4}
                };
 
        std::cout << "Before:" << std::endl << m << std::endl;
        
        go(m);
 
        std::cout << "After:" << std::endl << m;
 
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2011, 02:38     ввод матрицы с клавитауры
Посмотрите здесь:

ввод матрицы 3х3 C++
Ввод матрицы вручную C++
C++ Ввод и вывод матрицы
C++ Ввод - вывод матрицы
Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю. Ввод,вывод,сумму в виде отдельных процедур C++
C++ Ввод с клавы размера целочисленной матрицы, а затем самой матрицы. Найти наибольший элемент. Разрешается использовать только один оператор цикла
Ввод матрицы C++
C++ Ввод и обработка матрицы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 06:38     ввод матрицы с клавитауры #2
Вы не знаете как использовать std::cin >> m[i][j] в цикле?
И при чем тут Visual С++?
клоны атакуют?
Yandex
Объявления
08.03.2011, 06:38     ввод матрицы с клавитауры
Ответ Создать тему
Опции темы

Текущее время: 12:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru