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

Работа с потоками. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработайте класс http://www.cyberforum.ru/cpp-beginners/thread416825.html
При входе в метро некоторые пассажиры оплачивают проезд, а некоторые проходят бесплатно по удостоверения. Разработайте класс, для учета пассажиров и заплаченных ими денег. В классе иметь два члена: количество вошедших на станцию метро пассажиров и сумма заплаченных ими денег. Предусмотрите две функции-оператора + для добавления целого (увеличивает число пассажиров и не увеличивает выручку) и...
C++ График изменения температуры в с++ Здравствуйте. Меня интересует следующий вопрос. Каким образом в с++ 2008 express edition создать график функции, который будет непрерывно менятся, то есть это сигнал, который мы наблюдаем и видим, что он изменяется. Меня интересует код программы на с++. Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread416816.html
Целочисленный массив C++
В целочисленный массив X(n) после каждого нечетного элемента вставить простой элемент этого же массива. Определить среднее арифметическое простых элементов массива до и после вставки.
Функция и указатель C++
Помогите доделать прогу. Эта прога. разделяет русские и латинские буквы на две строки. Нужно сделать так что бы она ещё выводила 3-й большие латинские буквы и 4-й большие русские буквы. #include<iostream.h> #include<string.h> #include<stdio.h> #include<conio.h> void razlozh(){ int m,n,y,x; m=0; n=0; cout<<"Vvedite stroku simvolov"<<"\n";
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread416766.html
Здраствуйте мне нужно чтобы этот код работал по принципу считывает из текстового файла информацию, обрабатывает ее в соответствии с индивидуальным заданием и выводит на экран заданное у меня код работает что нужно вводить строку , а мне нужно чтобы он из файла считывал текст и определял самое длинное слово и кол-ва таких слов в тексте и паказал это на экране #include <iostream> #include...
C++ Чтение файлов Здравствуйте! Подскажите пожалуйста как прочитать из файла таблицу чисел которая записанна с точностью до 12 знака после запятой. мне нужно прочитать числа с этой точностью. Заранее спасибо! подробнее

Показать сообщение отдельно
Василий Д.
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 5
25.12.2011, 13:45  [ТС]     Работа с потоками.
Вот пример.
Рекурсивная программа:
Код
// перебор последовательностей 0<= x[0]<x[1]<..<x[m] <=n
#include<stdio.h>
#define m 3
#define n 7

struct arg
{
	int k;
   int x[m+1];
};


FILE *fp;
long kol=0;	// количество решений

void rec(void *p) // int k;
{
int x[m+1];     // решение x[0]<x[1]<..<x[m]
int i,y;

int k=((arg*)p)->k;

	for (i=0; i<k; i++) x[i]=((arg*)p)->x[i];

	for (y=0;y<=n;y++)
	{
        	x[k]=y;
		if(k==0 || (k>0 && x[k-1]<x[k]))
                {
		 	if (k==m) // если получено решение -- вывести
			    {
			       	for (i=0;i<=k;i++)
			       		fprintf(fp," %d",x[i]);
			       	fprintf(fp, "\n");
			       	kol++;
			    }
			if (k<m)
         	{
            	arg t;
               t.k=k+1;
					for (i=0; i<=k; i++) t.x[i]=x[i];
               rec(&t);
         		//rec(k+1);
            }
		}
        }
}
main()
{
	arg init;
   init.k=0;
	fp=fopen("sd16rec.txt","w");
	rec(&init);
	printf("\n kol= %d",kol);
}
Она же только через потоки:
Код
// перебор последовательностей 0<= x[0]<x[1]<..<x[m] <=n
#include<windows.h>
#include<stdio.h>
#define m 3
#define n 7
struct arg
{
	int k;
   int x[m+1];
};
HANDLE mut;	// доступ к выводному файлу
FILE *fp;
long kol=0;	// количество решений
DWORD WINAPI rec(void *p)
{
int x[m+1];     // решение x[0]<x[1]<..<x[m]
int i,y;
HANDLE H[n+1];
int num_ths=0; // количество потоков
int k=((arg*)p)->k;
	for (i=0; i<k; i++) x[i]=((arg*)p)->x[i];
arg mt[n+1];	// массив параметров подпрограммы
	for (y=0;y<=n;y++)
	{
        	x[k]=y;
		if(k==0 || (k>0 && x[k-1]<x[k]))
      {
		 	if (k==m) // если получено решение -- вывести
			    {
                WaitForSingleObject(mut,INFINITE);
			       	for (i=0;i<=k;i++)
			       		fprintf(fp," %d",x[i]);
			       	fprintf(fp, "\n");
			       	kol++;
                 ReleaseSemaphore(mut,1,NULL);
			    }
			if (k<m)
         	{
               mt[num_ths].k=k+1;
					for (i=0; i<=k; i++) mt[num_ths].x[i]=x[i];
         	H[num_ths]=CreateThread(0,0,rec, (void *)(&(mt[num_ths])),0,0);
            	num_ths++;
         		//rec(k+1);
            }
		}
   }
     for (i=0; i<num_ths; i++)
   	 		WaitForSingleObject(H[i],INFINITE);
}
main()
{
 	mut=CreateSemaphore(NULL,1,1,NULL);
	arg init;
   init.k=0;
	fp=fopen("sd16rec.txt","w");
	rec(&init);
}
Добавлено через 1 минуту
Вы не ошибаетесь - код и правда кишит ошибками )
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru