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

Прокомментируйте программу (программа внутри) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функции. Напечатать на экране все те числа, которые принадлежат этому интервалу... http://www.cyberforum.ru/cpp-beginners/thread711525.html
Дан интервал натуральных чисел . Напечатать на экране все те числа, которые принадлежат этому интервалу и которые можно выразить как сумму квадратов двух натуральных чисел (используя функцию, которая знает квадраты целых чисел)
C++ Оптимизировать перебор Неделю учу С++, так что прошу не гадить. Надо уменьшить время работы. Задача: Вступление — Брат мой, Магистр Ордена хочет узнать завтра о результатах наших многолетних изысканий. Он хочет видеть, ни много, ни мало, Суммирующую Машину! Даже более того: он хочет, чтобы наша Машина — всего лишь машина — продемонстрировала свое постижение Таинства Суммы настолько глубоко, насколько это возможно.... http://www.cyberforum.ru/cpp-beginners/thread711507.html
Как объяснить какую книгу выбрать в подарок? C++
Девушка подарит мне книгу по программированию C++. Меня интересует книга для новичков, но чтобы не консольный си был а объектно-ориентированный (ну то есть формы, окошки). Подскажите как можно по-простому объяснить человеку, не знающему программирование, что выбрать нужно именно второй вариант, не вынося при этом моск ;) Например, "если в оглавлении упоминается ___, то эта книжка по-любому не по...
C++ Выделить первое слово из строки(работа с указателями)
Здравствуйте, помогите пожалуйста, в чем ошибка в моем коде: #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int substr(char *s1, char *s2);
C++ Написать программу: копирование файлов http://www.cyberforum.ru/cpp-beginners/thread711489.html
Пожалуйста, помогите написать программу, копирующую один файл в другой. Имена файлов программа должна получать из командной строки.Если не удаётся открыть соответствующий файл, должно выдаваться сообщение...
C++ Сколько букв "У" в введенном слове стоит на четных местах? сортировка строк в С++ подробнее

Показать сообщение отдельно
victory19933
2 / 2 / 0
Регистрация: 24.04.2011
Сообщений: 70

Прокомментируйте программу (программа внутри) - C++

27.11.2012, 23:35. Просмотров 420. Ответов 12
Метки (Все метки)

Пожалуйста помогите прокомментить. Для чего нужны вектора ,хоть немного....
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
147
148
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <cmath>
#include <cassert>
#include <algorithm>
using namespace std;
 
typedef double ld;
const ld pi = 3.14159265358979;
const ld eps = 0.0001;
 
vector <vector<ld> > a, b, c, d;
 
int main()
{
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    a = vector<vector<ld> >(n, vector<ld>(n, 0.0));
    b = vector<vector<ld> >(n, vector<ld>(n, 0.0));
    c = vector<vector<ld> >(n, vector<ld>(n, 0.0));
    d = vector<vector<ld> >(n, vector<ld>(n, 0.0));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
    assert(a[i][j] == a[j][i]);
    int k = 0;
    ld t;
    for (int i = 0; i < n; i++)
    c[i][i] = 1;
    do
    {
        int idx, jdx;
        ld maxVal = 0;
        idx = jdx = -1;
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                if (fabsl(a[i][j]) > maxVal)
                {
                    idx = i;
                    jdx = j;
                    maxVal = fabsl(a[i][j]);
                }
            }
        }
        ld phi;
        if (fabs(a[idx][idx] - a[jdx][jdx]) < eps)
            phi = pi / 4;
            else
                phi = atan(2 * a[idx][jdx] / (a[idx][idx] - a[jdx][jdx])) / 2;
        ld si = sin(phi);
        ld co = cos(phi);
        for (int v = 0; v < n; v++)
        {
            for (int s = 0; s < n; s++)
            {
                if (s == idx)
                {
                    b[v][s] = a[v][idx] * co + a[v][jdx] * si;
                    d[v][s] = c[v][idx] * co + c[v][jdx] * si;
                    continue;
                }
                if (s == jdx)
                {
                    b[v][s] = -a[v][idx] * si + a[v][jdx] * co;
                    d[v][s] = -c[v][idx] * si + c[v][jdx] * co;
                    continue;
                }
                b[v][s] = a[v][s];
                d[v][s] = c[v][s];
            }
        }
        c = d;
        for (int v = 0; v < n; v++)
        {
            for (int s = 0; s < n; s++)
            {
                if (v == idx)
                {
                    a[v][s] = b[idx][s] * co + b[jdx][s] * si;
                    continue;
                }
                if (v == jdx)
                {
                    a[v][s] = -b[idx][s] * si + b[jdx][s] * co;
                    continue;
                }
                a[v][s] = b[v][s];
            }
        }
        t = 0;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
            {
                if (i != j)
                t += (a[i][j] * a[i][j]);
            }
            ++k;
    } while (t >= eps);
    cout.precision(7);
    vector <ld> lambdas;
    for (int i = 0; i < n; i++)
    {
        lambdas.push_back(a[i][i]);
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (lambdas[i] <= lambdas[j])
            {
                swap(lambdas[i], lambdas[j]);
                for (int k = 0; k < n; k++)
                {
                    swap(c[k][i], c[k][j]);
                }
            }
        }
    }
    sort(lambdas.begin(), lambdas.end());
    reverse(lambdas.begin(), lambdas.end());
    for (int i = 0; i < n; i++)
    {
        cout << lambdas[i] << " ";
    }
    cout << endl << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << c[j][i] << " ";
        }
        cout << endl;
    }
    return 0;
    system ("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru