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

Помощь с использованием потоков - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить значение выражения по формуле http://www.cyberforum.ru/cpp-beginners/thread726891.html
вычислить значение выражения по формуле(все переменные принимают действительные значения): x*ln(x)+y/(cos(x)-(x/3))
C++ Ветвление (значение функции от двух аргументов х и у, заданная таблицей) Написать программу что вычисляет значение функции от двух аргументов х и у, заданная таблицей. http://www.cyberforum.ru/attachment.php?attachmentid=211605&stc=1&d=1355164751 http://www.cyberforum.ru/cpp-beginners/thread726885.html
Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. C++
Здравствуйте, помогите решить эту задачу, пож-та. Я вроде всё сделал, не знаю что где не так. Вот эта задача: Заданы матрицы A= (i=1, 2, 3; j=1, 2, 3), B= (i=1, 2, 3; j=1, 2, 3), то есть матрицы А и В - 3x3. Расставить в порядке возрастания элементы в главных диагоналях каждой матрицы. Затем A и B сложить. Расстановку в порядке возрастания элементов оформить в виде подпрограммы. Вот, что у...
Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы исходной строчки... C++
Условие: дана строчка, которая содержит буквы и цифры. Преобразуйте эту строчку так, чтобы сначала в ней шли цифры, а потом - все буквы исходной строчки. Возможные символы - цифры; прописные и строчные латинские буквы. Сделал так: #include <iostream> #include <stdio.h> int main() { using namespace std; char *string;
C++ Нужны разъяснения по функции http://www.cyberforum.ru/cpp-beginners/thread726873.html
Имеется функция: #include "stdafx.h" #include <cstdlib> #include <iostream> #include <vector> using namespace std; int* find(const vector<int> &vec, int value)
C++ Преобразование в char Добрый вечер. Как сделать, чтобы работало: fstream outStream; double z, dz; ... outStream.open("points/" + (char)(z/dz) + ".txt", ios::out);? Добавлено через 23 часа 54 минуты Никто не знает? подробнее

Показать сообщение отдельно
Trant
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 18
10.12.2012, 23:56  [ТС]     Помощь с использованием потоков
Благодарю, поправил, все работает, правда зажовывает в конце символ, если в условии подсчета символов есть ch!=EOF, если условие убрать, то наоборот кол-во символов становится нормальным плюс еще считается конец файла.
Вот новый код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <windows.h>
#include <string>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <ctype.h>
 
using namespace std;
 
HANDLE hMutex = CreateMutex(NULL, false, NULL);
 
DWORD ThreadFunc(LPVOID lpvThreadParam)
{
    int count1=0,count2=0;
    FILE *fin,*fout;
    fin=fopen("C:\\in.txt","r");
if(int(lpvThreadParam)==1)
{
while(!feof(fin))
{
char ch;
ch=getc(fin);
if(ch!=' '&&ch!=EOF&&ch!='\n')
count1++;
}
fclose(fin);
WaitForSingleObject(hMutex, INFINITE);
fout=fopen("C:\\out.txt","a+");
fprintf(fout,"Символов в тексте %d. Выполнялся поток №%d\n",count1,int(lpvThreadParam));
fclose(fout);
ReleaseMutex(hMutex);
}

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
    if(int(lpvThreadParam)==2)
    {
        while(!feof(fin))
        {
          char ch;
          ch=getc(fin);
          if(ch==' ')
              count2++;
        }
        fclose(fin);
        WaitForSingleObject(hMutex, INFINITE);
        fout=fopen("C:\\out.txt","a+");
        fprintf(fout,"Пробелов в тексте %d. Выполнялся поток №%d\n",count2,int(lpvThreadParam));
        fclose(fout);
        ReleaseMutex(hMutex);
    }
    
    ExitThread(0);
}
 
 
int main()
{
    int Id = 1;
 
    DWORD lpThreadId[2];
    HANDLE hThreadId[2];
 
    hThreadId[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadFunc, (LPVOID)Id++, 0, &lpThreadId[0]);
    hThreadId[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadFunc, (LPVOID)Id++, 0, &lpThreadId[1]);
    WaitForMultipleObjects(2, hThreadId, TRUE, INFINITE);
 
 
    return 0;
}

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