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

Ошибка доступа на break - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задать строку без нулевого символа http://www.cyberforum.ru/cpp-beginners/thread1233894.html
подскажите как задать строку без нулевого символа? когда пишешь так char str = "hello world" он автоматом добавляется, пробовал даже писать так char str = {'h','e','l'} (ну и т.д.) и все равно добавляется :( а очень надо без нулевого символа...
C++ Помогите найти ошибку: Создать строку символов произвольной длины, заданную диапазоном /*Задание: Создать строку символов произвольной длины. Ввести с клавиатуры начало и конец диапазона в строке. Записать строку без диапазона(т.е. часть справа и часть слева)*/ #include <iostream> #include <stdio.h> using namespace std; int main() { int z=0, t=0; char x, y; http://www.cyberforum.ru/cpp-beginners/thread1233890.html
Релиз консольной программы с SNMP запросами - найти ошибку в коде C++
Привет всем! Я написал программку, которая опрашивает некоторые устройства используя запросы по протоколу SNMP. Программа отлично работает при Start without debugging, но её релизная версия спотыкается в самом начале, а именно при первом запросе. Прошу тыкнуть, где я мог что-то сделать неправильно? Релизную версию получаю запуском Build->Batch build->... Код программы: #include...
C++ Поиск популярного триплета. Конструктивная критика
Добрый день. Недавно помогал решать задачу про триплеты, и захотелось услышать критики по своему коду :D. все-таки только учусь, и она я считаю будет полезной. в первую очередь, хотелось бы услышать: конструктивную критику по коду, советы по улучшению быстродействия алгоритма, может вообще другой алгоритм ;D, ну а потом остальное. принципи тут все простое.. но .. вот что-то захотелось))) ...
C++ Вместо включения используйте закрытое наследование http://www.cyberforum.ru/cpp-beginners/thread1233787.html
Здравствуйте. Изучаю С++ по книге Прата С. "Язык программирования С++. Лекции и упражнения". Столкнулся с проблемой. Есть задание: Выполните еще раз упражнение 1, но вместо включения используйте закрытое наследование. Здесь также могут пригодиться несколько объявлений typedef. Подумайте, как можно применить следующие операторы: PairArray::operator=(PairArray(Arraylnt() , Arraylnt())); ...
C++ Обеспечить работу приложения с БД Firebird на других ПК Добрый день. Есть программа с бд на firebird, как скомпилировать программу так, что бы на компьютере где нет firebird она запускалась и работала? подробнее

Показать сообщение отдельно
ulafrl
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 4
25.07.2014, 16:41     Ошибка доступа на break
Здравствуйте!
Пишу программу, по сути являющуюся мини базой данных, в которой должна быть возможность сохранить и загрузить базу.
Сохранение вроде как работает, но вот с загрузкой проблемы.
Если смотреть по отладчику, то считывание происходит корректно, но на строчке 199 (break) происходит ошибка "нарушение прав доступа при чтении..."
Код:
Кликните здесь для просмотра всего текста
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
#include <string>
#include <iostream>
#include <conio.h>
#include <ctype.h>
#include <vector>
#include <fstream>
using namespace std;
 
struct mystructure
{
    string model;
    string mark;
    int frequency;
    int RAM;
    string markHDD;
    int storHDD;
    bool GPU;
    double price;
};
 
 
class computer
{
private:
    string model;
    string mark;
    int frequency;
    int RAM;
    string markHDD;
    int storHDD;
    bool GPU;
    double price;
public:
    computer() {};
    ~computer() {};
    friend void vvod(computer &ob);
    friend void vyvod(computer &ob);
    friend void shortstream(computer& ob);
    friend mystructure savebase(computer& ob);
    friend computer openbase(mystructure& ob);
};
 
void shortstream(computer& ob)
{
    cout << ob.mark << "  -  " << ob.model;
};
 
void vvod(computer &ob)
{
    system("cls");
    cout << "Введите название производителя ПК:\n";
    cin >> ob.mark;
    cout << "Введите модель ПК:\n";
    cin >> ob.model;
    cout << "Введите тактовую частоту CPU (MHz):\n";
    cin >> ob.frequency;
    cout << "Введите объём оперативной памяти (MB):\n";
    cin >> ob.RAM;
    cout << "Введите название производителя HDD:\n";
    cin >> ob.markHDD;
    cout << "Введите объём HDD (GB):\n";
    cin >> ob.storHDD;
    cout << "Имеется ли дискретный GPU? (0 - нет, 1 - да)\n";
    cin >> ob.GPU;
    cout << "Введите цену ПК ($):\n";
    cin >> ob.price;
};
 
void vyvod(computer &ob)
{
    cout << "Производитель: " << ob.mark << endl;
    cout << "Модель: " << ob.model << endl;
    cout << "Частота CPU: " << ob.frequency << " MHz" << endl;
    cout << "RAM: " << ob.RAM << " MB" << endl;
    cout << "Производитель HDD: " << ob.markHDD << endl;
    cout << "Объём HDD: " << ob.storHDD << " GB" << endl;
    if (ob.GPU = false)
        cout << "Дискретный GPU: Нет" << endl;
    else
        cout << "Дискретный GPU: Да" << endl;
    cout << "Цена: " << ob.price << "$" << endl;
};
 
mystructure savebase(computer& ob)
{
    mystructure temp;
    temp.model = ob.model;
    temp.mark = ob.mark;
    temp.frequency = ob.frequency;
    temp.RAM = ob.RAM;
    temp.markHDD = ob.markHDD;
    temp.storHDD = ob.storHDD;
    temp.GPU = ob.GPU;
    temp.price = ob.price;
    return temp;
};
 
computer openbase(mystructure& ob)
{
    computer temp;
    temp.model = ob.model;
    temp.mark = ob.mark;
    temp.frequency = ob.frequency;
    temp.RAM = ob.RAM;
    temp.markHDD = ob.markHDD;
    temp.storHDD = ob.storHDD;
    temp.GPU = ob.GPU;
    temp.price = ob.price;
    return temp;
};
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
 
    vector<computer>base;
 
    int key = 0;
    while (key != 27)
    {
        system("cls");
        cout << "Для выбора пункта меню нажмите соответствующую клавишу\n" << endl;
        cout << "1  - Добавить ПК в базу\n"
            << "2   - Краткий список ПК в базе\n"
            << "    - Удалить ПК из базы\n"
            << "    - Поиск (не работает нихрена)\n"
            << "9   - Сохранить базу\n"
            << "0   - Загрузить базу\n"
            << "ESC - Выход" << endl;
        key = _getch();
 
        switch (key)
        {
        case 49: //1    - Добавить ПК в базу
        {
            computer temp = computer();
            vvod(temp);
            base.push_back(temp);
            temp.~computer();
            break;
        }
        case 50: // 2 - Краткий список ПК в базе
        {
            int kol = base.size();
            if (kol != 0)
            {
                for (int i = 0; i < kol; i++)
                {
                    cout << i + 1 << ") ";
                    shortstream(base[i]);
                    cout << endl;
 
                }
            }
            system("pause");
            break;
        }
        case 57: //9    - Сохранить базу
        {
            system("cls");
            string filename;
            cout << "Введите имя файла: "; cin >> filename;
            mystructure temp;
            int length = 0; int kol = base.size();
            ofstream file(filename + ".db"); filename.clear;
            file.clear();
            //file.seekp(0, ios::end);
            file.write((char*)&kol, sizeof(int));
            for (int i = 0; i < base.size(); i++)
            {
                temp = savebase(base[i]);
                length = sizeof(temp);
                file.write((char*)&length, sizeof(int));
                file.write((char*)&temp, length);
            }
            file.close();
            break;
        }
        case 48: //0    - Загрузить базу
        {
            system("cls");
            base.clear();
            string filename;
            cout << "Введите имя файла: "; cin >> filename;
            mystructure temp;
            int length = 0; int kol = 0;
            ifstream file(filename + ".db"); filename.clear;
            //file.seekg(0, ios::beg);
            file.read((char*)&kol, sizeof(int));
            for (int i = 0; i < kol; i++)
            {
                file.read((char*)&length, sizeof(int));
                file.read((char*)&temp, length);
                base.push_back(openbase(temp));
            }
            file.close();
            break;
        }
        }
    }
    base.~vector();
    return 0;
};


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