32 / 7 / 1
Регистрация: 10.09.2010
Сообщений: 836
1

оценку времени выполнения алгоритма на С++

28.11.2011, 17:50. Показов 2936. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
оценить время работы алгоритма для матриц размерностей от 5 на 5 (верхний предел может быть больше), результаты измерений записать в файл
на основании данных теста из файла вывести график зависимости времени работы программы от размерности матрицы, сделать выводы все файле Excele должно быть

вот по этому коду

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
#include "stdafx.h"
#include <iostream>//i/o
#include <conio.h> //getch
#include <cmath>   //fabs, abs
using namespace std;
 
void ShowVector(int n, double * vec);
void PryamoiHod(int n, double **a, double *b);
void ObratniHod(int n, double **a, double *b, double *x);
 
int main()
{
        int i,j,n;
        double **a, *b, *x;
        do
        {
                std::cout<<"Enter NUM of equations: ";
                std::cin>>n;
                //Выделяем память под матрицу А и векторы В и Х
                a = new double *[n];
                b = new double  [n];
                x = new double  [n];
                for(i = 0; i < n; i++)
                {
                        a[i] = new double[n];
                        //Ввод a
                        for(j = 0; j < n; j++)
                        {
                                std::cout<<"a["<<i + 1<<"]["<<j + 1<<"] = ";
                                std::cin>>a[i][j];
                        }
                }
                //Ввод b
                for(i = 0; i < n; i++)
                {
                        std::cout<<"b["<<i + 1<<"] = ";
                        std::cin>>b[i];
                }
                
                std::cout<<"\tSee input\r\n";
                std::cout<<"Matrix A:\r\n";
                for(i = 0; i < n; i++)
                        ShowVector(n, a[i]);
                std::cout<<"Vector B:\r\n";
                ShowVector(n, b);
                
                std::cout<<"\tSolving on Gauss method\r\n";
                PryamoiHod(n, a, b);
                std::cout<<"Forvard Gauss course\r\n";//Прямой ход
                std::cout<<"Matrix A:\r\n";
                for(i = 0; i < n; i++)
                        ShowVector(n, a[i]);
                std::cout<<"Vector B:\r\n";
                ShowVector(n, b);
 
                ObratniHod(n, a, b, x);
                std::cout<<"Back Gauss course\r\n";//Обратный ход
                std::cout<<"Matrix A:\r\n";
                for(i = 0; i < n; i++)
                        ShowVector(n, a[i]);
                std::cout<<"Vector B:\r\n";
                ShowVector(n, b);
 
                std::cout<<"Results :\r\n";
                ShowVector(n, x);
 
                std::cout<<"Press Y for new input\r\n";
                //Чистим память
                delete [] a;
                delete [] b;
                delete [] x;
        }
        while(toupper(getch()) == 'Y');
        return 0;
}
 
void ShowVector(int n, double * vec)
{
        for(int i = 0; i < n; i++)
                std::cout<<vec[i]<<" ";
        std::cout<<endl;
}
 
void PryamoiHod(int n, double **a, double *b)
{
        double v;
        for(int k = 0,i,j,im; k < n - 1; k++)
        {
                im = k;
                for(i = k + 1; i < n; i++)
                {
                        if(abs(a[im][k]) < abs(a[i][k]))
                        {
                                im = i;
                        }
                }
                if(im != k)
                {
                        for(j = 0; j < n; j++)
                        {
                                v                = a[im][j];
                                a[im][j] = a[k][j];
                                a[k][j]  = v;
                        }
                        v     = b[im];
                        b[im] = b[k];
                        b[k]  = v;
                }
                for(i = k + 1; i < n; i++)
                {
                        v               = 1.0*a[i][k]/a[k][k];
                        a[i][k] = 0;
                        b[i]    = b[i] - v*b[k];
                                                if(v != 0)
                        for(j = k + 1; j < n; j++)
                        {
                                a[i][j] = a[i][j] - v*a[k][j];
                        }
                }
        }
}
 
void ObratniHod(int n, double **a, double *b, double *x)
{
        double s = 0;
        x[n - 1] = 1.0*b[n - 1]/a[n - 1][n - 1];
        for(int i = n - 2, j; 0 <= i; i--)
        {
                s = 0;
                for(j = i + 1; j < n; j++)
                {
                        s = s+a[i][j]*x[j];
                }
                x[i] = 1.0*(b[i] - s)/a[i][i];
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 17:50
Ответы с готовыми решениями:

Реализовать абстрактную таблицу и дать оценку времени выполнения основных операций
Здравствуйте, дали задание реализовать абстрактную таблицу и дать оценку времени выполнения...

Подсчёт времени выполнения алгоритма. выводит 0
Подскажите что тут не так. Выводит 0 как-будто времени не проходит void W(vector&lt;int&gt; &amp; A, int...

Проверка времени выполнения алгоритма линейного поиска
Имею вот такой код: #include &lt;random&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;windows.h&gt;...

Полиморфизм времени выполнения/времени компиляции
Здравствуйте, подскажите, пожалуйста, литературу, где мне внятно можно узнать что такое полиморфизм...

2
541 / 446 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
28.11.2011, 18:22 2
Вот тут обсуждалось, как измерить время выполнения...
1
32 / 7 / 1
Регистрация: 10.09.2010
Сообщений: 836
28.11.2011, 18:44  [ТС] 3
на подобие этого?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
#define N 100000
 
int main(void)
{
        clock_t start = clock();
        size_t i, j, a;
        for(i = 0; i < N; ++i)
                for(j = 0; j < N; ++j)
                        a = pow(2, 20);
                        
        clock_t finish = clock();
        printf("The program worked %.2f seconds...\n",
                         (finish - start) / (double) CLOCKS_PER_SEC);   
        return EXIT_SUCCESS;
}
 Комментарий модератора 
Код выделяем тегами!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2011, 18:44
Помогаю со студенческими работами здесь

Время выполнения алгоритма
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;time.h&gt; using namespace std; void...

Программа для выполнения алгоритма
Ребята,привет. Ситуация такая: работаю днём на компе,а вечером на ноуте, бывает меняется, днём на...

Рассчитать время выполнения алгоритма
рассчитать время выполнения алгоритма со сложностью О (n^2) для n=10000 если время выполнения для...

Как узнать время выполнения алгоритма
Мне нужно сравнить несколько алгоритмов сортировки. Но таким способом как у меня, дает очень...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru