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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
st_kastiel
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
#1

Косяки со временем - C++

25.05.2010, 22:25. Просмотров 293. Ответов 0
Метки нет (Все метки)

Вот вроде все должно работать!! но время выводит косячно, сначала 0, теперь вообще отрицательные значения выводит...скока не читаю ничего не могу найти... подскажите пожалуйста..
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
// OC_3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int h,m,s,h1,m1,s1, sum1,sum2,rez;
const int NANOSECOND_BLOCKS_IN_MILLISECOND = 10000.0;
__int64 qwStartTime, qwFinishTime, qwTotalTimeElapsed;
 
 
__int64 FileTimeToQuadWord(PFILETIME pFileTime)
{
const int bits = 32;
// квадрослово формируется из двух 32-битных чисел
return(Int64ShllMod32(pFileTime->dwHighDateTime // сдвиг верхних 32 битов
                                                , bits // сдвиг влево на 32 бита
                                                        ) // результат - верхняя часть квадрослова
                                                            | pFileTime->dwLowDateTime // нижняя часть квадрослова
                                                                                        );
}                           
 
DWORD WINAPI fpot(LPVOID iNum)
{
    rez=sum2-sum1;
    return rez;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    
    // выделить непосредственно память
    FILETIME threadStart; // начало работы потока
    FILETIME threadEnd; // окончание работы потока
    FILETIME dummy; // неиспользуемое значение
 
    DWORD idThread, idThread2;
    HANDLE hThread1, hThread2;
 
    
    
    cout<<"Введите первое значение времени ЧЧ:ММ:СС\n";
point:
    cin>>h>>m>>s;
        if ( ((m||s)>60) || ((m||s)<0) || (h>24) || (h<0) )
        {
            cout<<"Некорректное значение времени, введите корректно\n";
            goto point;
        }
 
    sum1=(s+(h*3600)+(m*60));
 
    cout<<"Первое значение времени в секундах:"<<sum1<<"\n\n";
 
    cout<<"Введите второе значение времени ЧЧ:ММ:СС\n";
 
point2:
 
    cin>>h1>>m1>>s1;
 
        if ( (((m1||s1)>60) || ((m1||s1)<0)) || ((h1>24) || (h1<0)) )
        {
            cout<<"Некорректное значение времени, введите корректно\n";
            goto point2;
        }
 
    sum2 = (s1+(h1*3600)+(m1*60));
 
    cout<<"Второе значение времени в секундах: "<<sum2<<"\n\n";
 
    
    hThread1 = CreateThread (NULL, 0, fpot, 0, CREATE_SUSPENDED, &idThread);
    hThread2 = CreateThread (NULL, 0, fpot, 0, CREATE_SUSPENDED, &idThread2);     
 
    if( (hThread1||hThread2) == NULL)
        return GetLastError();
    else cout<<"Потоки созданы\n";
 
    // созданному потоку устанавливается приоритет HIGHEST
    SetThreadPriority(hThread1  // дескриптор первого потока
                        , THREAD_PRIORITY_NORMAL ); // уровень приоритета
    // 2му созданному потоку устанавливается приоритет LOWEST
    SetThreadPriority(hThread2  // дескриптор первого потока
                        , THREAD_PRIORITY_LOWEST  // уровень приоритета
                                                    );
    // выполнение потока в данном случае вызовом функции возобновления
 
    cout<<"Тaблицa 1 Стaндaртные знaчения приoритетa пoтoкa числoвoе знaчение\n\n";
                cout<<" THREAD_PRIORITY_TT.ME_CRITT.CAL 15\n";
                cout<<" THREAD_PRIORITY_HIGHEST 2\n";
                cout<<" THREAD_PRIORITY_ABOVE_NORMAL 1\n";
                cout<<" THREAD_PRIORITY_NORMAL 0\n";
                cout<<" THREAD_PRIORITY_BELOW_NORMAL -1\n";
                cout<<" THREAD_PRIORITY_LOWEST -2\n";
                cout<<" THREAD_PRIORITY_IDLE -15\n\n";
 
    cout<<"Приоритет первого потока равен: "<<GetThreadPriority(hThread1)<<"\n\n";
    cout<<"Приоритет второго потока равен: "<<GetThreadPriority(hThread2)<<"\n\n";
 
    ResumeThread(hThread1);
    Sleep(1000);
 
    GetThreadTimes(hThread1,
                 &threadStart,
                 &threadEnd,
                 &dummy,
                 &dummy
                        );  
    
    qwStartTime = FileTimeToQuadWord(&threadStart);
    qwFinishTime = FileTimeToQuadWord(&threadEnd);
    qwTotalTimeElapsed = qwFinishTime - qwStartTime;
    // вывод значения времени работы потока в миллисекундах
        
    WaitForSingleObject(hThread1, INFINITE);
 
    cout<< " Первый поток выполнился за "<< qwTotalTimeElapsed / NANOSECOND_BLOCKS_IN_MILLISECOND << " миллисекунд";
    
    ResumeThread(hThread2);
    Sleep(1000);
 
    GetThreadTimes(hThread2,
                 &threadStart,
                 &threadEnd,
                 &dummy,
                 &dummy
                        );
    
    qwStartTime = FileTimeToQuadWord(&threadStart);
    qwFinishTime = FileTimeToQuadWord(&threadEnd);
    qwTotalTimeElapsed = qwFinishTime - qwStartTime;
    // вывод значения времени работы потока в миллисекундах
    
    
    WaitForSingleObject(hThread2, INFINITE);
 
    cout<< "\n Второй поток выполнился за "<< qwTotalTimeElapsed / NANOSECOND_BLOCKS_IN_MILLISECOND  << " миллисекунд";
    
    cout<<"\nРазница между первым и вторым значениями времени в секундах:"<< rez<<"\n";
 
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2010, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Косяки со временем (C++):

Косяки с графикой при переключении окон - C++
Вобщем, я отчаялся понять в чем дело. Нужно в заданной клетке поля нарисовать нолик(игра &quot;Крестики-нолики&quot;). Все норм, но когда я...

Программа тестирования, не могу разобрать свои косяки :(. - C++
Добрый день. очень нужна помощь. Стояла задача написать программу тестирования, корорая подсчитывает баллы за правильные ответы через...

Возникновение странных погрешностей около нуля и возникающие из-за нее косяки - C++
Всем привет! Сразу к делу, тренирую свое генетический алгоритм на тестовых функциях. Одна из них - функция де Йонга, формула во...

Работа со временем - C++
Мне нужно заходить в if через каждые 10 миллисекунд я пытался через time(NULL) брать 2 переменные и считать их разницу но компилятор на...

Работа с временем - C++
Здравствуйте! Помогите пожалуйста с идеями. Надо написать программку которая будет напоминать о ранее записанных действиях. Как я...

Работа со временем - C++
Добрый день. Есть два промежутка времени. Начальное и конечное. С помощью цикла do .. while выполняю действие, пока условие истина (если...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 22:25
Привет! Вот еще темы с ответами:

Управление временем - C++
Как управлять временем? Например хочу написать программу, которая каждые 5 секунд выводит сообщение &quot;Hi!&quot;. Скажи как это...

Работа с временем - C++
Доброе время суток! Допустим у я хочу ввести время начала, и время конца разговора. Нужно вывести длительность разговора. ну то что отнять...

Операции со временем - C++
Здравствуйте. Прошу помочь в решении задачи: Время задается в формате час.минута.секунда. Реализовать следующие операции (учесть...

Операции со временем - C++
Здравствуйте, хотел бы узнать на счет времени и операций с ними. Есть задание, часть которого связана со временем, а именно: необходимо...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru