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

Уточнение о полях структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Представление чисел в памяти! http://www.cyberforum.ru/cpp-beginners/thread1212474.html
нужна сделать реализацию числа в памяти получилось для одного числа, а как сделать для нескольких, т.е передаю {1,1,0,0} выдаст {0,0,1,1}, если несложно то напишите , а то целый день не могу справиться) char * LittleEndian(unsigned int values) { size_t bytes = sizeof(values); char *n = new char; for (size_t i = 0; i < bytes; i++) {
C++ Структура "Работник" подскажите, как сделать задание по с++, пожалуйста Определить структурный тип содержащий следующую информацию: Фио, должность, стаж работы, оклад, премия Ввести пять элементов данного типа. Распечатать информацию в табличном виде. http://www.cyberforum.ru/cpp-beginners/thread1212472.html
Исправить функцию (копирование значений типа TCHAR * ) C++
Ниже представлена функция TCHAR *GetIndex(TCHAR *path), которая принимает путь к текстовому файлу, и возвращает индекс в TCHAR *. Индекс - упорядоченная последовательность пар (порядковый номер предложения – смещение от начала файла) для каждого предложения в файле. Вернее - она должна это делать, но не делает. Я уже совсем запутался с функциями, которые работают с TCHAR. Помогите, пожалуйста,...
Почему не работает условие в While? C++
#include <iostream> using namespace std; void main () { int n=12, NS = 2, answer, answer1, answerFinish, a,b; while (n<=1) { a=n/NS; answer = a; b = a*NS;
C++ Правильно ли я реализовываю сложение чисел в длинной арифметике? http://www.cyberforum.ru/cpp-beginners/thread1212426.html
class LongLong { private: char * longNumber; int _size; public: LongLong(const char *number = NULL); LongLong(unsigned int); friend LongLong operator +(const LongLong &, const LongLong &);
C++ Работа с файлами. Как добавить переход на новую строку при записи? Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.», например, «Иванов В.С.». Вопрос, моя программа делает то что нужно, а как так сделать чтобы в другой файл записывалось Фамилия И.О. с новой строки? Или не правильно сделал прогарамму? Каверников Михаил Александрович Иванов Павел Андреевич Иванов Виктор... подробнее

Показать сообщение отдельно
Spiderman5
31 / 31 / 14
Регистрация: 07.04.2014
Сообщений: 215
19.06.2014, 18:00     Уточнение о полях структуры
Подскажите, пожалуйста, почему у меня не видны поля структуры ? Мне кажется, я где-то неправильно обращаюсь к структуре, но не знаю, как правильно сделать.
В коде эти 2 места обозначены комментарием.
Если вдруг для ответа нужен класс Вектор, на основе которого делалась очередь, то его тоже прикрепляю.

PriorityQueue.h
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
 
#pragma once
#include "SmartVector.h"
 
template <class T>
struct PriorityQueueItem
{
    T item;
    int priority;
};
 
template <class T>
class PriorityQueue
{
private:
    SmartVector<PriorityQueueItem<T> > queue;
public:
    PriorityQueue(){}
 
    bool IsEmpty() const { return queue.IsEmpty(); }
 
    void Add(const T& value, int priority);
    T Extract();
 
    uint GetCount() const { return queue.GetCount(); }
};
 
template <class T>
void PriorityQueue<T>::Add(const T& value, int priority)
{
    int index = queue.GetCount();
    for (int i = 0; i < queue.GetCount(); i++)
    {
        if (queue[i].priority < priority) // почему после queue[i]. уже не видит priority
        {
            index = i;
            break;
        }
    }
    PriorityQueueItem<T> p = {value, priority};
    queue.Insert(index, p);
}
 
template <class T>
T PriorityQueue<T>::Extract()
{
    if (queue.IsEmpty())
        throw "queue is empty";
    else
    {
        T value = queue[0].item; // почему после queue[0]. уже не видит item
        queue.Remove(0);
        return value;
    }
}
SmartVector.h

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
#ifndef __SMARTVECTOR_H__
#define __SMARTVECTOR_H__
 
typedef unsigned int uint;
 
template <class T>
class SmartVector
{
private:
    // Размер блока памяти для начального выделения памяти.
    // Методы Add и Insert используют эту константу для
    // начального выделения памяти, если массив пуст.
    // Конструкторы не используют эту константу, а используют
    // указанное при их вызове количество элементов.
    enum { block_size = 16 };
 
    T *data;
    uint count;
    uint capacity;
 
    bool IsFull() const { return count == capacity; }
public:
    // Конструкторы
    SmartVector() : data(0), count(0), capacity(0) {}
    explicit SmartVector(uint initCount);
    SmartVector(const SmartVector<T>& v);
    SmartVector(T array[], uint arraySize);
    // Деструктор
    ~SmartVector() { Clear(); }
 
    // Очистка вектора
    void Clear();
 
    // Присваивание
    SmartVector& operator=(const SmartVector<T>& v);
 
    // Работа с размером вектора
    uint GetCount() const { return count; }
    bool IsEmpty() const { return count == 0; }
    bool operator!() const { return IsEmpty(); }
 
    // Доступ к элементам
    T& operator[](uint index);
    const T& operator[](uint index) const;
 
    // Добавление и удаление элементов
    void Add(const T& item);
    void Insert(uint index, const T& item);
    void Remove(uint index);
};
 
template <class T>
SmartVector<T>::SmartVector(uint initCount)
{
    if (!initCount)
        data = 0;
    else
        data = new T[initCount];
    count = capacity = initCount;
}
 
template <class T>
SmartVector<T>::SmartVector(const SmartVector<T>& v)
{
    if (!v.count)
        data = 0;
    else
    {
        // Выделяем память и копируем элементы
        data = new T[v.count];
        for (uint i = 0; i < v.count; i++)
            data[i] = v.data[i];
    }
    count = capacity = v.count;
}
 
template <class T>
SmartVector<T>::SmartVector(T array[], uint arraySize)
{
    if (!arraySize)
        data = 0;
    else
    {
        // Выделяем память и копируем элементы
        data = new T[arraySize];
        for (uint i = 0; i < arraySize; i++)
            data[i] = array[i];
    }
    count = capacity = arraySize;
}
 
template <class T>
void SmartVector<T>::Clear()
{
    if (count)
    {
        delete[] data;
        data = 0;
        count = capacity = 0;
    }
}
 
template <class T>
SmartVector<T>& SmartVector<T>::operator=(const SmartVector<T>& v)
{
    // Проверка на самоприсваивание
    if (this == &v) return *this;
 
    if (!v.count)
    {
        delete[] data;
        data = 0;
    }
    else
    {
        // Выделяем память и копируем элементы
        T *temp = new T[v.count];
        for (uint i = 0; i < v.count; i++)
            temp[i] = v.data[i];
        // Удаляем старый массив
        delete[] data;
        data = temp;
    }
    count = capacity = v.count;
 
    return *this;
}
 
template <class T>
T& SmartVector<T>::operator[](uint index)
{
    if (index >= count)
        throw "SmartVector<T>::operator[](uint index): Out of bounds!";
 
    return data[index];
}
 
template <class T>
const T& SmartVector<T>::operator[](uint index) const
{
    if (index >= count)
        throw "SmartVector<T>::operator[](uint index) const: Out of bounds!";
 
    return data[index];
}
 
template <class T>
void SmartVector<T>::Add(const T& item)
{
    if (!count)
    {
        data = new T[block_size];
        capacity = block_size;
        *data = item;
    }
    else
    {
        if (IsFull())
        {
            // Увеличиваем массив в 2 раза
            uint newcapacity = capacity * 2;
            // Выделяем память и копируем элементы
            T *temp = new T[newcapacity];
            for (uint i = 0; i < count; i++)
                temp[i] = data[i];
            // Добавляем новый элемент
            temp[count] = item;
            // Удаляем старый массив
            delete[] data;
            data = temp;
            capacity = newcapacity;
        }
        else
            data[count] = item;
    }
    count++;
}
 
template <class T>
void SmartVector<T>::Insert(uint index, const T& item)
{
    if (index > count)
        throw "SmartVector<T>::Insert(uint index, const T& item): Out of bounds!";
 
    if (!count)
    {
        data = new T[block_size];
        capacity = block_size;
        *data = item;
    }
    else
    {
        if (IsFull())
        {
            // Увеличиваем массив в полтора раза
            uint newcapacity = capacity * 2;
            // Выделяем память и копируем элементы
            T *temp = new T[newcapacity];
            for (uint i = 0; i < count; i++)
                if (i < index)
                    temp[i] = data[i];
                else if (i >= index)
                    temp[i + 1] = data[i];
            // Вставляем новый элемент
            temp[index] = item;
            // Удаляем старый массив
            delete[] data;
            data = temp;
            capacity = newcapacity;
        }
        else
        {
            for (uint i = count - 1; i >= index; i--)
                data[i + 1] = data[i];
            data[index] = item;
        }
    }
    count++;
}
 
template <class T>
void SmartVector<T>::Remove(uint index)
{
    if (index >= count)
        throw "SmartVector<T>::Remove(uint index): Out of bounds!";
 
    if (count == 1)
    {
        delete[] data;
        data = 0;
        capacity = 0;
    }
    else
    {
        for (uint i = index + 1; i < count; i++)
            data[i - 1] = data[i];
    }
    count--;
}
 
#endif /* __SMARTVECTOR_H__ */
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru