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

ПРОГРАММИРОВАНИЕ МАТРИЧНЫХ ОПЕРАЦИЙ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Если данная последовательность не упорядочена, найти среднее геометрическое ее положительных членов http://www.cyberforum.ru/cpp-beginners/thread147511.html
Здравствуйте! Помогите пожалуйста! Вот у меня есть программа! Но нет сортировки! Задача: Если данная последовательность не упорядочена ни по невозрастанию, ни по неубыванию, найти среднее геометрическое положительных членов. Отсортировать можно любой сортировкой и вставить в пункт сортировка Заранее благодарна!
C++ Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов... Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. В файловой системе каталог файлов организован в виде линейного списка. Для каждого файла в каталоге содержатся следующие сведения: • имя файла; • дата создания; • количество обращений к файлу. Написать программу, которая обеспечивает: • ... http://www.cyberforum.ru/cpp-beginners/thread147499.html
C++ Время выполнения функции
Вопрос - как можно измерить время выполнения функции? clock() не подходит, т.к функции выполняются быстрее миллисекунды. есть способ как измерить в наносекундах? программирую в Visual Studio 2005
Найти максмальный элемент по каждой строке двухмерного массива. C++
Найти максмальный элемент по каждой строке двухмерного массива и вывести их на экран...помогите пожалуйста...мне всю прогу не надо мне только само нахождение!
C++ Найти и исправить ошибки в коде http://www.cyberforum.ru/cpp-beginners/thread147482.html
помогите исправить ошибки , пожалуйста... Сделать файл с информацией о преподавателях.Вывести на экран информацию о преподавателях возрастом меньше 37 лет. надо на BORLAND C++ #include<iostream.h> #include<fstream.h> #include<string.h> #include<stdio.h> #include<conio.h>
C++ Матрици 3 Дано натуральное число n. Определите, сколько положительных элементов содержится под главной диагональю матрицы построенной по следующей формуле. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
20.06.2010, 01:37     ПРОГРАММИРОВАНИЕ МАТРИЧНЫХ ОПЕРАЦИЙ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//Разработать алгоритм и программу на языке С++ решения следующих 
//взаимосвязанных задач:
//1) рассчитать элементы квадратной матрицы A=(aij ), i,j = 0,1,2,...,n-1 
//по заданной формуле;
//2) сформировать из матрицы A элементы вектора X = (xi), i = 0,1,2,...,n-1 
//по заданному правилу;
//3) провести заданное упорядочение элементов матрицы А или вектора Х.
 
//1) Аij = pow(-2,i))/(pow(n,2)+1-i*j)
 
//2) Xi - скалярное произведение k-го столбца на i-ю строку, где k- номер 
//максимального элемента i-й строки;
//3) упорядочить элементы столбцов матри-цы A по возрастанию абсолютных зна-чений; 
#include <vector>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <iomanip>
#include <cmath>
 
typedef double               T_elem;
typedef std::vector<T_elem>  T_row;
 
class T_dvumern_arr
{        
    typedef std::vector<T_row>   T_matrix;
    
    int                          n_;
    T_matrix                     matrix_;        
public:
    T_dvumern_arr(int  n) : n_(n), matrix_(n_, T_row(n_))
    {}
    //-----------------------------------------------------------
    T_dvumern_arr(T_matrix  matrix) : n_(matrix.size()), matrix_(matrix)
    {}
    //-----------------------------------------------------------
    T_matrix  get_transp_matrix()
    {        
        T_dvumern_arr  temp_dvumern_arr(n_);        
        for(int i = 0; i < n_; ++i)
        {
            for(int j = 0; j < n_; ++j)
            {                
                temp_dvumern_arr.matrix_[i][j] = matrix_[j][i];
            }
        }        
        return  temp_dvumern_arr.matrix_;
    }
    //-----------------------------------------------------------
    void calculate_matrix()
    {
        for(int i = 0; i < n_; ++i)
        {
            for(int j = 0; j < n_; ++j)
            {                
                matrix_[i][j] = pow(static_cast<T_elem>(-2), i) 
                                /(n_ * n_ + 1 - i * j);
            }
        }            
    }
    //-----------------------------------------------------------
    T_row  get_vector()
    {
        T_row  res_vector(n_);
        for(int i = 0; i < n_; ++i)
        {
            T_row  cur_row  = matrix_[i];
            int k = std::max_element(cur_row.begin(), cur_row.end()) - cur_row.begin();
            //Получаем k-й столбец:
            T_row  col_k = get_transp_matrix()[k];
            res_vector[i] 
            = std::inner_product(col_k.begin(), col_k.end(), cur_row.begin(), 0.0);
        }
        return  res_vector;
    }
    //-----------------------------------------------------------
    static struct T_uporjad_po_abs
    {
        bool operator() (T_elem e1, T_elem e2)
        {
            return abs(e1) < abs(e2);
        }
    };
    //-----------------------------------------------------------
    void uporjad_columns()
    {
        T_matrix  transp_matrix = get_transp_matrix();
        for(int i = 0; i < n_; ++i)
        {
            T_row  cur_col = transp_matrix[i];
            std::sort(cur_col.begin(), cur_col.end(), T_uporjad_po_abs());
        }
        T_dvumern_arr  transp_arr(transp_matrix);
        matrix_ = transp_arr.get_transp_matrix();
    }
    //-----------------------------------------------------------
    static void print_elem(T_elem  elem)
    {        
        std::cout << std::setw(12) 
                  << std::right 
                  << std::fixed 
                  << std::setprecision(4) 
                  << elem;      
    }
    //-----------------------------------------------------------
    static void print_row(T_row  row)
    {
        std::for_each(row.begin(), row.end(), print_elem);
        std::cout << std::endl;
    }
    //-----------------------------------------------------------
    void print()
    {
        std::for_each(matrix_.begin(), matrix_.end(), print_row);        
    }
};
 
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "n = ";
    int n;
    do
    {
        std::cin >> n;
    }while(n <= 0);
    T_dvumern_arr  A(n);
    A.calculate_matrix();
    std::cout << std::endl
              << "Вычисленная матрица A:"
              << std::endl;
    A.print();
    T_row V = A.get_vector();
    std::cout << std::endl
              << "Вычисленный вектор V:"
              << std::endl;
    T_dvumern_arr::print_row(V);
    A.uporjad_columns();
    std::cout << std::endl
              << "Матрица A после упорядочения ее элементов столбцов по возрастанию"
              << std::endl
              << "абсолютных значений:"
              << std::endl;
    A.print();
    return 0;
}
 
Текущее время: 17:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru