-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEnvCPU
86 lines (73 loc) · 2.39 KB
/
EnvCPU
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
#include <iostream>
using std::cout;
using std::endl;
#include <fstream>
using std::ifstream;
#include <cstring>
#include <time.h>
#include <windows.h>
const int MAX_CHARS_PO_LINIJA = 512;
const int MAX_TOKENS_PO_LINIJA = 20;
const char* const DELIMITER = " ";
int m = 0; //Brojac na linii
double oblacnost[10000], temperatura[10000], vlaznost[10000], veter[10000], nasoka[10000], parczbir[10000]; //Obelezuvanje na vektori
int main()
{
ifstream infile;
infile.open("METEO- BT1998.txt"); // otvora text file
if (!infile.good())
{
cout << "Fajlot ne e najden!" << endl;
system("pause");
return 1; // izlez ako fajlot ne e najden
}
// citaj sekoja linija od fajlot
while (!infile.eof())
{ // citaj cela linija vo memorija
char buf[MAX_CHARS_PO_LINIJA];
infile.getline(buf, MAX_CHARS_PO_LINIJA);
// parsiranje na linijata vo prazni - delimitirani tokeni
int n = 0; // brojac na tokeni
// array za zacuvuvanje na memoriskite adresi na tokenite vo buf
const char* token[MAX_TOKENS_PO_LINIJA] = {0};// na 0
// parsiranje na linijata
token[0] = strtok(buf, DELIMITER); // prv token
if (token[0]) // nula ako linijata e prazna
{
for (n = 1; n < MAX_TOKENS_PO_LINIJA; n++)
{
token[n] = strtok(0, DELIMITER); // sledni tokeni
if (!token[n]) break; // nema poveke tokeni
}
}
// kreiranje na pole
for (int i = 0; i < n; i++) // n = broj na tokeni
{
oblacnost[m] = atof(token[4]);
temperatura[m] = atof(token[5]);
vlaznost[m] = atof(token[6]);
veter[m] = atof(token[7]);
nasoka[m] = atof(token[8]);
}
m = m++; //Brojac na linii
}
//Pocetok na merenje na vremeto
clock_t tStart = clock();
double zbir = 0;
//Presmetka na vrednostite
for (int x = 0; x < m+1 ; x++)
{
parczbir[x] = oblacnost[x] + temperatura[x] + vlaznost[x] + veter[x] + nasoka[x];
for (double y = 1; y < 1100000; y++); // Vestacko kasnenje 10ms - simulacija na presmetki
}
for (int x = 0; x < m+1 ; x++)
{
zbir = parczbir[x] + zbir;
}
//Prikaz na vremeto potrebno za izvrsuvanje na programata
printf("Vreme na izvrsuvanje CPU: %.5fs\n", (float)(clock() - tStart)/CLOCKS_PER_SEC);
//Prikaz na zbirot vrednosta
printf("Rezultatot e : %0.2f\n",zbir);
infile.close();
system ("pause");
}