С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Обнуляются поля в структуре - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нарисовать блок-схему программы http://www.cyberforum.ru/cpp-beginners/thread1491036.html
Нужна Блок схема программы "Тест". Вот код: #include "stdafx.h" #include <iostream> #include <fstream> #include <stdio.h> #include <conio.h> #include <string> using namespace std; struct...
C++ Разделить файл на четные и нечетные числа Программа открывает файл,заполненный случ.числами в диапозоне -500 500.затем считывает из него данные,разделяет четные и нечетные числа и записывает другой файл,сохраняя исходный порядок для каждой... http://www.cyberforum.ru/cpp-beginners/thread1491032.html
Составить блок-схему к программе C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <dos.h> int main() { int value; std::cout << "Enter value" << std::endl;
C++ Нужна блок-схема
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <dos.h> int main() { int value;
C++ Формирование строки http://www.cyberforum.ru/cpp-beginners/thread1491020.html
Здравствуйте. Вопросы таковы: 1) Если мне нужно сформировать строку из большого числа переменных разного типа (числа, массивы символов и std::string), существуют ли классы и функции для таких...
C++ Построить таблицу значений функции Постройте таблицу значений функции для . Решить задачу тремя способами: использовать операторы for, while, do while. подробнее

Показать сообщение отдельно
ReDoX
0 / 0 / 0
Регистрация: 01.07.2015
Сообщений: 10
01.07.2015, 13:49  [ТС]
3 файла всего в проекте. Сначала кину hpp файлы, потом cpp.
inventory.hpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once
 
/*
 * Размер структуры
 */
const size_t arraySize = 255;
 
struct InventoryType {
    char name[40]; // Имя
    int onHand;    // В наличии
    int leadTime;  // Время до пополнения товара
    double cost;   // Цена
    double retail; // Розничная цена
} inventory[arraySize];
 
int menu();
void initList();
void enter();
void display();
void display(size_t *inventoryItem);
void update();
void search();
void input(size_t *inventoryItem);

main.hpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
#pragma once
 
/*
 * Флаг, по которому определяем, 
 * добавлять ли новую строку в начале программы или нет
 */
bool *firstTime = new bool(true);

main.cpp
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <Windows.h>
 
#include "main.hpp"
#include "inventory.hpp"
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    /*
     * Обнуляем все элементы структуры
     */
    initList();
 
    while (true) {
        /*
         * Если меню выводится не в первый раз,
         * добавляем пустую строку для красоты
         */
        if (!firstTime)
            cout << endl;
        firstTime = false;
 
        switch (menu()) {
        case 'e':
            enter();
            break;
        case 'd':
            display();
            break;
        case 'u':
            update();
            break;
        case 's':
            search();
            break;
        case 'q':
            return EXIT_SUCCESS;
        }
    }
}
 
int menu()
{
    char command;
 
    do {
        cout << "(E)nter" << endl;
        cout << "(D)isplay" << endl;
        cout << "(U)pdate" << endl;
        cout << "(S)earch" << endl;
        cout << "(Q)uit" << endl << endl;
        cout << "Введите команду: ";
        cin >> command;
    } while (!strchr("edusq", tolower(command)));
 
    return tolower(command);
}
 
void initList()
{
    /*
     * Все элементы структуры теперь равны '\0'
     */
    for (size_t *i = new size_t(0); *i < arraySize; ++(*i))
        *inventory[*i].name = '\0';
}
 
void enter()
{
    size_t *inventoryItem = new size_t(0);
 
    /*
     * Ищем свободную яичейку для записи, т.е. проверяем не равно ли имя 0
     */
    for (; *inventoryItem < arraySize; ++(*inventoryItem)) {
        if (!*inventory[*inventoryItem].name)
            break;
    }
 
    /*
     * Больше некуда записывать
     */
    if (*inventoryItem == arraySize) {
        cout << "Список полон." << endl;
 
        delete inventoryItem;
 
        return;
    }
 
    input(inventoryItem);
}
 
void display()
{
    /*
     * Выводим все элементы структуры
     */
    for (byte inventoryItem = 0; inventoryItem < arraySize; ++inventoryItem) {
        if (*inventory[inventoryItem].name) {
            cout << "Имя: " << inventory[inventoryItem].name << endl;
            cout << "Стоимость: $" << inventory[inventoryItem].cost << endl;
            cout << "В розницу: $" << inventory[inventoryItem].retail << endl;
            cout << "В наличии: " << inventory[inventoryItem].onHand << endl;
            cout << "До пополнения осталось: "
                << inventory[inventoryItem].leadTime << " дней" << endl << endl;
        }
    }
}
void display(size_t *inventoryItem)
{
    /*
     * Выводим определенную яичейку структуры
     */
    cout << "Имя: " << inventory[*inventoryItem].name << endl;
    cout << "Стоимость: $" << inventory[*inventoryItem].cost << endl;
    cout << "В розницу: $" << inventory[*inventoryItem].retail << endl;
    cout << "В наличии: " << inventory[*inventoryItem].onHand << endl;
    cout << "До пополнения осталось: "
        << inventory[*inventoryItem].leadTime << " дней" << endl << endl;
 
    delete inventoryItem;
}
 
void update()
{
    /*
     * Получаем искомое имя
     */
    char *name = new char[80];
    cout << "Введите наименование товара: ";
    cin >> *name;
 
    size_t *inventoryItem = new size_t(0);
 
    /*
     * Ищем по имени то, что дал пользователь
     */
    for (; *inventoryItem < (arraySize - 1); ++(*inventoryItem)) {
        if (!strcmp(name, inventory[*inventoryItem].name))
            break;
    }
 
    delete[] name;
 
    cout << "Введите новую информацию." << endl;
 
    /*
     * Меняем значения в уже существующей яичейке
     */
    input(inventoryItem);
}
 
void search()
{
    /*
     * Получаем искомое имя.
     */
    char *name = new char[80];
    cout << "Введите наименование товара: ";
    cin >> *name;
 
    size_t *inventoryItem = new size_t(0);
 
    for (; *inventoryItem < (arraySize - 1); ++(*inventoryItem)) {
        /*
         * Проходим по всей структуре пока не найдем соответствие,
         * если нашли, завершаем цикл.
         */
        if (!strcmp(name, inventory[*inventoryItem].name)) {
            /*
            * Передаем на вывод то, что нашли.
            */
            display(inventoryItem);
            break;
        }
    }
 
    delete[] name;
}
 
void input(size_t *inventoryItem)
{
    cout << "Товар: ";
    cin >> inventory[*inventoryItem].name;
 
    cout << "Стоимость: ";
    cin >> inventory[*inventoryItem].cost;
 
    cout << "Розничная цена: ";
    cin >> inventory[*inventoryItem].retail;
 
    cout << "В наличии: ";
    cin >> inventory[*inventoryItem].onHand;
 
    cout << "Время до пополнения запасов (в днях): ";
    cin >> inventory[*inventoryItem].leadTime;
 
    delete inventoryItem;
}


Поменял как вы сказали, ничего не изменилось. Просто я скопировал код из похожего метода, где все работает. Поэтому я не думаю что там что - то не так. Правда забыл убрать (arraySize - 1), но пока до последнего же элемента дело не дошло
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.