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

Разименование указателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сохранение переменной в файл http://www.cyberforum.ru/cpp-beginners/thread640363.html
Есть глобальная переменная static char Pass; Есть поток, в цикле которого эта переменная меняется раз в примерно 0.5 секунды. В мейне цикл ждёт нажатия еска для сохранения этой переменной в файл и выключения программы. Помогите с проблемой при сохранении! Если поток закомментировать а переменной что-нибудь присвоить сохраняет нормально. Если поток работает, переменная меняется, то в мейне её...
C++ Получение памяти под структуру Не могу понять, почему нельзя привести void* в мою структуру: struct func { double k,x; }; struct func* getArg(struct point &p1,struct point &p2) { struct func* functions_attr = malloc(sizeof(struct func)); functions_attr->k = (p1.y-p2.y)/(p1.x-p2.x); functions_attr->b = p1->y-k*p1->x; http://www.cyberforum.ru/cpp-beginners/thread640344.html
C++ Трудности с организацией классовой иерархии
Класс A использует данные класса B для выполнения своих методов, которые вызывает класс B. Что не хватает этому коду для того чтобы он закомпилировался? #include <iostream> class B; class A { B* v; public:
Вычисление ряда C++
Всем доброго время суток. Нужно написать программу для вычисления ряда: 1 + 2*x + 3*{x}^{2} + 4*{x}^{3} + ... = \sum_{n=0}^{infinity}(n + 1)*{x}^{n}=\frac{1}{{(1-x)}^{2}} Аргумент x (x по модулю меньше 1) вводится с клавиатуры пользователем, а граница ряда определяется как константа. Вот код, но он не совсем правильный, не могу понять в чем ошибка: #include <cstdio> #include <cstdlib>...
C++ Заполнить контейнер случайными числами http://www.cyberforum.ru/cpp-beginners/thread640340.html
ТОлько начинаю свой тернистый путь, многие с этого начинали так что не надо судить строго мой нубовский код! идея такова что бы контейнер заполняется числами до 1000 они там перемешиваются и выводится число под номером 1, проблема в том что при каждом запуске программа выдаёт одно и тоже число, мне кажется, что после вывода числа нужно как бы очистить контейнер от тех 1000 перемешаных чисел, что...
C++ Решение задач C++ Р. Лафоре Всем привет. нужна помощь в в решении 11 задачи 2 главы книги. Уже все перепробовал, не могу найти друго решения как поставить подчеркивания после первой строки. В аттаче задание и мой солюшен, немного глупый, но другого я не придумал. все попытки сделать это более красиво ни к чему не привели. Пожалуйста, помогите в решении данной задачи, заранее благодарен. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
24.08.2012, 12:11     Разименование указателя
Цитата Сообщение от alexey31415 Посмотреть сообщение
Я прошу лишь помочь избавиться от этой проблемы.
- пожалуйста
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#include "StdAfx.h"
#include "Action.h"
 
//ищем слово и определяем необходимые данные
bool _parse(
    DATA &list,
    vector<string> words,
    size_t position,
    short &number,
    short &parametr,
    void * data);
 
//определяю какие данные передаются ф-ии в зависимости
//от ф-ии и параметра
void get_parametr
    (
    vector<string> words,
    size_t position,
    short number,
    short parametr,
    void * data
    );
 
 
int main()
{
    setlocale(LC_ALL,"Rus");
    //system("chcp 1251");
 
    DATA _list;
 
    ID  temp;
 
    //заполняю список данными
 
    //----------------------------------------------------------
    temp._0 = 1;//глагол,определяет вызываемую ф-ию
    temp._1 = 0;//вызов Print
    temp._2 = 0;
    temp._3 = 0;
 
    _list.insert(DATA::value_type("print",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 1;
    temp._1 = 0;//вызов Print
    temp._2 = 0;
    temp._3 = 0;
 
    _list.insert(DATA::value_type("show",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 1;
    temp._1 = 1;//вызов Go
    temp._2 = 0;
    temp._3 = 0;
 
    _list.insert(DATA::value_type("go",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 2;//существительное,определяет параметр ф-ии
    temp._1 = 0;//используем при вызове Print
    temp._2 = 1;//параметр,передаваемый функции(печатаем фразу)
    temp._3 = 0;
 
    _list.insert(DATA::value_type("phrase",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 2;
    temp._1 = 0;//используем при вызове Print
    temp._2 = 0;//печатаем цифру
    temp._3 = 0;
 
    _list.insert(DATA::value_type("digit",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 2;
    temp._1 = 1;//используем при вызове Go
    temp._2 = 0;//идём в деревню
    temp._3 = 0;
 
    _list.insert(DATA::value_type("village",temp));
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    temp._0 = 2;
    temp._1 = 1;//используем при вызове Go
    temp._2 = 1;//идём в город
    temp._3 = 0;
 
    _list.insert(DATA::value_type("town",temp));
    //----------------------------------------------------------
 
    //кол-во необработанных слов
    size_t nonunderstood = 0;
    short _number = -1;
    short _parametr = -1;
 
    string phrase;
    vector<string>  words;
    string token;
 
    cout << "Введите фразу : ";
 
    //getline(cin,phrase);
    cout<<(phrase = "I glad to see you")<<endl;
    void *_data = (void *) (new char[2*phrase.size()]);
 
    stringstream ss(phrase);
    while(ss>>token)
        words.push_back(token);
 
    get_parametr
    (
    words,
    1,
    0,
    -1,
    _data
    );
    cout<<(const char *)_data<<endl;
 
    for(size_t i = 0;i < words.size();i++)
    {
        if(
            !_parse
            (
                _list,
                words,
                i,
                _number,
                _parametr,
                _data
            )
        )
            nonunderstood++;
    }
 
    if(nonunderstood == words.size())
    {
        cout << "I didn't understand anything of what you wrote to me" << endl;
        system("pause");
        return 0;
    }
 
    if(_number != -1 && _data != NULL)
    {
        Action act;
 
        act.Do(_number,_parametr,_data);
    }
    else
        cout << "Error" << endl;
 
    system("pause");
    return 0;
}
 
//определяю какие данные передаются ф-ии в зависимости
//от ф-ии и параметра
void get_parametr
    (
    vector<string> words,
    size_t position,
    short number,
    short parametr,
    void * data
    )
{
    string phrase;
    switch(number)
    {
    //----------------------------------------------------------
    //ф-ия Print
    case 0:
        if(parametr)
        {
            //печатаем фразу
            for(size_t i = position;i < words.size();i++)
                phrase += words.at(i) + " ";
            memcpy(data, (void *)(phrase.c_str()),phrase.size());
        }
        else
            //печатаем цифру
            memcpy(data, (void *)words.at(position + 1).c_str(),words.at(position + 1).size());
        break;
    case 1:
    //вызов ф-ии Go
        if(!parametr)
            //идём в деревню
            memcpy(data, (void *)words.at(position).c_str(),words.at(position).size());
        else
            //идём в город
            memcpy(data, (void *)words.at(position).c_str(),words.at(position).size());
        break;
    }
}
 
bool _parse
        (
            DATA &list, 
            vector<string> words, 
            size_t position,
            short &number, 
            short &parametr, 
            void * data
        )
{
    
    ID temp;
    DATA::iterator Iter;
    //ищу слово из массива words
    Iter = list.find(words.at(position));
    bool bRet = true;
    //если не найдено
    if(Iter == list.end())
        bRet = false;
    else
    {
        //получаю ID слова
        temp = Iter->second;
        //определяю номер ф-ии или её параметр
        switch(temp._0)
        {
        case 1:
            number = temp._1; 
            break;
        case 2:
            parametr = temp._2;
            get_parametr(words,position, number,parametr,data);
            break;
        }
    }
    return bRet;
 
}
(проект в аттаче)
PS:Проблемма на самом деле в другом - в пустом DATA list в него ты ничего не добавляешь.Я специально добавил перед циклом разбора функцию get_parametr, чтобы ты явно увидел что работает в твоём коде а что нет. Проект больше не правь - реши проблемму с добавлением в свою мультимапу и убери чёрт возьми & от data кроме как void ** ты этим ничего не получишь...
Миниатюры
Разименование указателя  
Вложения
Тип файла: rar Temp.exe.rar (56.1 Кб, 2 просмотров)
Тип файла: rar Test_VS6_9_proj.rar (15.4 Кб, 2 просмотров)
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru