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

Помощь с фиксом ошибок - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать массив по убыванию методом "пузырька" http://www.cyberforum.ru/cpp-beginners/thread867566.html
отсортировать массив по убыванию методом "пузырька". ПОМОГИТЕ с КОДОМ(С++)
C++ Вывести на экран тех людей с одинаковым телефоном Приветствую. Такая задача: дан файл, в котором есть поля - фамилия, инициалы, номер телефона. Отсортировать файл, по алфавиту (по полю фамилия), а потом вывести на экран тех людей, у которых одинаковые телефоны. С сортировкой проблем нет, а вот вывести на экран тех, у которых одинаковые телефоны - есть проблемы. #include <stdio.h> #include <iostream> #include <string.h> typedef struct... http://www.cyberforum.ru/cpp-beginners/thread867550.html
C++ Сортировка массива
Здравствуйте! Вот имею такую задачу: Дано 2 массива a b, написать программу, которая изменяет данные массивы, в соответствии с правилом: наибольшие элементы с массива a b принимаются в качестве нового значения a, а меньшие - в b. Прошу помощи. Вот то, что смог реализовать я: #include <iostream> #include <conio.h> using namespace std; void main() { int b, a, i; for (i=0; i<5; i++)
Определить позицию первого и последнего нуля в одномерном массиве C++
Определить позицию первого и последнего нуля в одномерном массиве, использую цикл For. Например массив состоит из 10307, программа в ответе должна выдать, что первый ноль стоит на второй позиции, а последний ноль стоит на четвертой позиции. Помогите плиз решить данную задачу.
C++ многопточное перемножение матриц http://www.cyberforum.ru/cpp-beginners/thread867511.html
Решил проверить многопоточность при построчном перемножении матриц. Создал программку(проект в аттаче), в которой можно задать размер матриц и кол-во потоков. Проделав несколько измерений на разных машинах(1,2 и 4 ядерных) пришёл неоднозначным результатам. Пытаюсь набросать небольшой отчёт по ходу дела(черновик в аттаче). Вопщем интересует вот-что:ъ 1. Где прирост производительности от 50 до...
C++ Потоки:обработка нажатия клавиш; вычисления,прорисовка Доброго времени суток,господа! Делаю курсовую - игру "змейка",тема изъезженная,да и не об этом сейчас,т.к. функционал рабочий есть. Препод предложил распараллелить программу на 2 потока: 1)обработка нажатия клавиш 2)вычисления,прорисовка. Попытался сделать,но клавиша обрабатывается, если долго и упорно долбить по ней, что у меня вызывает вопросы,т.к. в логе прописывается,что клавиша была... подробнее

Показать сообщение отдельно
Strick
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
18.05.2013, 10:15  [ТС]     Помощь с фиксом ошибок
Описание функций кода:
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 <stdio.h>
#include <pdh.h>
#include <conio.h>
 
#pragma comment(lib,"pdh.lib")
 
 
 
/************************** Описание функций ***************************/
 
#define PDH_ERROR -1
// Функция инициализирует PDH (performance data helper)
PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
// Функция возвращает в случае удачи загруженность проца, в противном случае PHG_ERROR (-1)
int GetCPUUsage (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
// Функция анинициализирует PDH
void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
// Функция показывает сообщение об ошибке
void ShowErrorMessage(PDH_STATUS pdhStatus);
// хмм... в названии функции все сказано!
void begin();
 
/****************************************************************************/
 
 
void main(void)
{
    Sleep(1000);
    begin();
    printf(TEXT("Press any key to continue")); // нажмите "any key" на клавиатуре 
    while (!_getch()); // ждем, пока юзверь не "клацнет" "any key"
}
 
void begin()
// хмм... в названии функции все сказано!
{
    PDH_STATUS  pdhStatus      = 0;
 
    HQUERY hQuery;
    HQUERY hCounter;
    int iUsage = 0;
    pdhStatus = pdh_Init(hQuery, hCounter); // инициализируем PDH
 
 // если не произошел облом с иницализации PDH, то
    if ( pdhStatus == ERROR_SUCCESS )
    {
 // пока юзверь не зажмет клавишу Esc, то
       while (GetKeyState(VK_ESCAPE) >= 0)
        {
 // получаем загруженность проца
            iUsage = GetCPUUsage(hQuery, hCounter, pdhStatus);
 
 // если не произошла ошибка (т.е. не вернулось значение PHG_ERROR)
            if (iUsage != PDH_ERROR)
                printf("%3i%%\r\n", iUsage); // выводим значение
            else // а если произошла ошибка, то
// показываем сообщение, что произошла ошибка такая-то
            ShowErrorMessage(pdhStatus);
 //         Sleep(500); // ждем 0.5 секунд(ы)
        }
// если юзверь все-таки клацнул Esc, то флаг ему в руки :)
        pdh_Uninit(hQuery, hCounter); // заканчиваем работу с PDH
    }
    else // если произошла ошибка при инициализации PDH
        ShowErrorMessage(pdhStatus); // показываем Еррорное сообщение
}
 
void ShowErrorMessage(PDH_STATUS pdhStatus)
// Сама функция показа сообщения об ошибке
{
    LPSTR szMessage = NULL;
// грузим строку с ошибкой в szMessage. Память выделит функция
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                    FORMAT_MESSAGE_FROM_HMODULE,
                    GetModuleHandle("PDH.DLL"), pdhStatus,
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                    szMessage, 0, NULL);
    printf("Error №%i:  %s\r\n", pdhStatus, szMessage); // показываем ошибку
    LocalFree(szMessage); // очищаем буфер
}
 
PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
// инициализируем PDH
{
    PDH_STATUS  pdhResult   = 0;
    TCHAR       szCounterPath[1024];
    DWORD       dwPathSize  = 1024;
    PDH_COUNTER_PATH_ELEMENTS pe;
    DWORD       dwType      = 0;
    
    pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); // запрос на открытие PDH 
    if ( pdhResult != ERROR_SUCCESS ) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
 
    pe.szMachineName     = 0l;
    pe.szObjectName      = "Processor";
    pe.szInstanceName    = "_Total";
    pe.szParentInstance  = NULL;
    pe.dwInstanceIndex   = 0;
    pe.szCounterName     = "% Processor Time";
 
// создаем путь к счетчику PDH
    pdhResult = PdhMakeCounterPath(&pe, szCounterPath, &dwPathSize, 0);
    if (pdhResult != ERROR_SUCCESS) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
// открываем счетчик PDH
    pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS) // если была ошибка, то
        return pdhResult; // выходим, возвращая номер ошибки
 // если дошли до этого места, то ошибки на 100% не было!
    return pdhResult;
}
 
int GetCPUUsage(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
// получаем загруженность проца
{
    DWORD       dwType      = 0;
// даем запрос на сборы инфы
    pdhStatus = PdhCollectQueryData(hQuery);
    if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
        return PDH_ERROR; // выходим, возвращая ошибку
    _PDH_FMT_COUNTERVALUE pfci;
    ZeroMemory(&pfci, sizeof(pfci)); // очищаем структуру pfci
// Получаем инфу о загруженности проца!
    pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci); 
    if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
        return PDH_ERROR; // выходим, возвращая ошибку
    return (int)pfci.doubleValue; // возвращаем загруженность проца!
} 
 
void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
// анинициализация 
{
    PdhRemoveCounter(hCounter); // удаляем счетчик
    PdhCloseQuery(hQuery); // закрываем запрос
}
Добавлено через 49 минут
ап.

Добавлено через 1 час 3 минуты
ап.

Добавлено через 1 час 0 минут
ап.

Добавлено через 1 час 6 минут
ап.

Добавлено через 3 часа 5 минут
Ап.

Добавлено через 7 часов 13 минут
Ап.

Добавлено через 1 час 5 минут
Цитата Сообщение от BuGi Посмотреть сообщение
C++
1
2
3
pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
    if (pdhResult != ERROR_SUCCESS){::Beep(1000,1000);
    return pdhResult;}
Сигналит. Что вообще код делает? Комментируй все
Пробовал, никаких изменений.
http://data2.floomby.com/files/share...koyXSUPhOA.jpg
 
Текущее время: 17:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru