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

Матрицы. Посчитать усредненное время выполнения вычислений - C++

Восстановить пароль Регистрация
 
Олег74
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 105
28.03.2014, 17:34     Матрицы. Посчитать усредненное время выполнения вычислений #1
Даны две прямоугольные матрицы A и B размерности m×n и n×q соответственно. Необходимо разработать программу, которая производит умножение заданных матриц и выводит на экран усредненное время выполнения вычислений (в миллисекундах). Пользователь вводит только размерность матриц, значения элементов матриц вычисляются с помощью генератора случайных чисел.
Подскажите,пожалуйста,как посчитать усредненное время выполнения вычислений?

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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
 
using namespace std;
float *mA;
   float *mB;
   float *mC;
 float *CreateMatrix(int m, int n)
    {
        float *matr = new float [m*n];
        return matr;
            
    }
 void FillMatrix(float *matrix, int m, int n)
 {
 
    for (int i=0; i<m; i++)
    
        for (int j=0; j<n; j++)
        
            *(matrix+i*n+j) = rand()%10;
 }
 void MultiplyMatrix(float *mA,float *mB, float *mC,int m,int n,int q)
 {
 for (int i=0; i<m; i++)
 {
        for (int j=0; j<q; j++)
        {
            float s = 0;
            for (int k=0; k<n; k++)
            {
                s +=*(mA+i*n+k) * *(mB+k*q+j);
                //s=s%10;
            }
            *(mC+i*q+j) = s;
        }
 }
    
 }
 void PrintMatrix(float *matrix,char *name, int m, int n)
 {  
     cout<<"Matrix\t";
     cout<<name;
     cout<<"\n";
 for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout<<*(matrix+i*n+j) <<' ';
            
        }
        cout<<endl;   
    }
 }
 
 
         
int main()
{
    
 
    int m,q,n,p;
   
   printf("m=");
   scanf("%d",&m);
   printf("n=");
   scanf("%d",&n);
   printf("q=");
   scanf("%d",&q);
 /*  printf("p=");
    scanf("%d",&p);*/
    
    /*mA = new float [m*n];
    mB = new float [n*q];
    mC = new float [m*q];*/
    
   
float *mA=CreateMatrix(m,n);
float *mB=CreateMatrix(n,q);
float *mC=CreateMatrix(m,q);
FillMatrix(mA,m,n);PrintMatrix(mA,"A",m,n); getch();
FillMatrix(mB,n,q);PrintMatrix(mB,"B",n,q); getch();
 
float start_time =  clock();
    for(double i=0;i<10;i++)
    {
MultiplyMatrix(mA,mB,mC,m,n,q);PrintMatrix(mC,"C",m,q); getch();
    
float end_time = clock(); // конечное время
    
float search_time = end_time - start_time; // искомое время
    
    printf("\n time=%lf",search_time);getch();
    }
 
 delete mA;
 delete mB;
delete mC;
    getch();
    
 
    return 0;       
}
Вложения
Тип файла: rar lab_1.rar (3.54 Мб, 6 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 17:34     Матрицы. Посчитать усредненное время выполнения вычислений
Посмотрите здесь:

Посчитать время выполнения программы C++
C++ посчитать время выполнения поиска
C++ Замерить время вычислений
Организация вычислений во время ввода данных C++
Посчитать количество операций в коде и время выполнения C++
C++ Организация вычислений во время ввода данных
C++ OpenMP. Возможность неблокировки UI на время вычислений
Организация вычислений во время ввода данных C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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