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

Потоки.Работа с файломи.Очередь.Стек. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Си-шные строки, как вытащить подстроку http://www.cyberforum.ru/cpp-beginners/thread513057.html
Есть ли для строк типа char*, wchar_t* стандартная функция, которая вытаскивает подстроку, как в классе string.substring(int pos, int count)?
C++ Определение внешнего IP адреса Необходимо определять внешний IP адрес. Задача усложнена тем, что много пользователей сидят за NAT'ом. Находил примеры где ip получают через сайты (типо myip_ru или ippages_com) Но это всё костыльные решения, т.к. формат не стандартизирован и в любой момент данная зависимость может перестать работать (либо сдохнет сайт, либо его админы решат сменить формат, либо еще что-то... вплодь до выдачи... http://www.cyberforum.ru/cpp-beginners/thread513055.html
Удалить строку и столбец целочисленной квадратной матрицы C++
Дана целочисленная квадратная матрица порядка n. Удалить из нее строку и столбец, на пересечении которых находится максимальный элемент (считаем, что он один). Добавлено через 11 часов 46 минут помогите,пожалуйста!
C++ C++, Программа-фильтр , циклические процессы..
Завтра сдавать, не поманию как... 1) С помощью оператора цикла с постусловием напишите программу-фильтр, которая вводит любые символы, но комментирует только буквы русского алфавита. Завершение работы - по нажатию буквы ‘Я’. 2)
C++ Bool переменные - как записать таблицы истинности функции, используя цикл http://www.cyberforum.ru/cpp-beginners/thread513042.html
Пусть есть 4 переменых типа bool (x1, x2, x3 ,x4) и логическая функция (y = !x1 x3 + x2!x4) как записать таблицы истинности даной функции используя цыкл?
C++ Адаптировать задачу для работы с файлом Дали такое задание: написать функцию revpositn которая которая принмает два параметра str1,str2 типа string и возвращает позицию начала первого появления в str1 текста содержащего литеры str2 в обратном порядке. Другими словами при вводе слов vnesnos sen выведет 2. Теперь суть проблемы. Написать программу я написал, и она работает: #include <iostream> #include <stdio.h> #include <string> ... подробнее

Показать сообщение отдельно
МихаилМ
26 / 26 / 1
Регистрация: 11.11.2009
Сообщений: 86
06.03.2012, 07:40     Потоки.Работа с файломи.Очередь.Стек.
Полностью рабочий код с очередью.
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
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <tchar.h>
#include <iostream>
#include <locale.h>
using namespace std;
 
struct Queue {
    char * data;
    Queue *next;
} ;
 
Queue * _begin=NULL;
 
 
DWORD WINAPI MyThread (LPVOID &lpParam)
{
    char*y="my.txt";
    HANDLE hFile;
    DWORD k;
    char *data;
    int size;
    data = (char *) malloc (20 * sizeof (char));
    
    Queue* que=(Queue*) lpParam;
 
    hFile = CreateFile (y, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
    Queue *tmp=NULL;
    
    while(true){
        if(que)
            while (que ->next) que=que->next;
        if(tmp!=que){
        memcpy (data, que->data, 20);
        tmp=que;
        size = strlen(que->data);
        WriteFile (hFile, &size, sizeof (size), &k, NULL);
        WriteFile (hFile, que->data, size, &k, NULL); 
 
        //que = que->next;
        }
    }    
    
    CloseHandle (hFile);
        //ExitThread (0);
    return 0;
} 
 
void Put(Queue**, char*);
void PrintQueue(Queue*);
 
 
int main()
{
    HANDLE hThread; 
    HANDLE hFile;
    DWORD ThID;
    DWORD k;
    char *y;
    char* data;
    setlocale(LC_ALL,"russian");
    
 
    //Create thread
    hThread = CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE)MyThread, &_begin, 0, &ThID);
    if (hThread == NULL){printf ("Ошибка. Нельзя создать поток!\n");}
        SuspendThread(hThread);
 
    int yy=0;
 
    do{
        printf("1.Добавить элемент в стек и записать в файл\n");
        printf("2.PrintQueue\n");
    
    switch(yy)
        {
            
    case 1:
        y= new char[20];
        y[0] = '\0';
        printf("Введите элемент:");
        scanf("%s",y);
        
        Put(&_begin,y);
        Sleep(10);
        ResumeThread(hThread);  
        //Sleep(10);
        printf("Элемент записан в файл\n");
        
        
            break;
    case 2:
        PrintQueue(_begin);
    }   
    }while(cin>>yy);
        return 0;
    }
 
 
 
void Put(Queue** queue, char* data)// поместить данные в конец очереди
{
Queue* que1 = (Queue*)calloc(1,sizeof(Queue));
que1->data=(char*)malloc(strlen(data)+1);
     
que1->data=data;
Queue* tmp=*queue;
    if(!tmp)
        *queue=que1;
    else
    {
        while(tmp->next) tmp=tmp->next;
        tmp->next=que1;
    }
}
 
 
void PrintQueue(Queue*queue) { // вывод на экран содержимого очереди
    printf("\n");
        while(queue){
            
            printf(queue->data);
            printf("\n");
            queue = queue->next;
        }
}
Нужно переделать под стек.
Фукцию добавления в стек переделал вот
C++
1
2
3
4
5
6
7
8
9
10
void Put(Queue** queue, char* data)// ïîìåñòèòü Г¤Г*Г*Г*ûå Гў ГЄГ®Г*ГҐГ¶ î÷åðåäè
{
Queue* que1 = (Queue*)calloc(1,sizeof(Queue));
que1->data=(char*)malloc(strlen(data)+1);
 que1->data=data;
 
               que1->next=NULL;
        strcpy(que1->data,data);
        que1->next=*queue;
        *queue=que1;
А чтобы правильно записыв. не могу сделать
В DWORD WINAPI MyThread (LPVOID &lpParam) происходит записть в файл, очередь все нормально записывается, а для стека не могу сделать.

Добавлено через 8 часов 51 минуту
Если что-то в коде неясно,спрашиваете
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru