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

Помoгите найти ошибку в коде! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблемы с деструктором http://www.cyberforum.ru/cpp-beginners/thread540967.html
Вот код : #include<iostream.h> #include<string.h> struct Value { char val_1; int val_2; bool val_3; };
C++ Задача Добрый день. Хочу проверить свои знания. Проштудировал Бьерна Штрауструпа(ВРОДЕ правильно )))) И Джеймса Либерти. Никиньте пару задач. Самому в голову не приходит и желательно по сложнее )))). Заранее благодарность вам. И главное не сочтите за тупость , что спросил такое.) http://www.cyberforum.ru/cpp-beginners/thread540915.html
Запись по указателю C++
#include <QtCore/QCoreApplication> #include <QDebug> int main(int argc, char *argv) { QCoreApplication a(argc, argv); int chislo=5; char mas; mas=1;
C++ name[name.size()] должен выдать наибольшее значение вектора, выдает ноль в любом случае.
int main(){ vector<double> temps; double temp; cout << "Введите последовательность символов и | для завершения цикла." << endl; while (cin >> temp){ temps.push_back(temp); } sort(temps.begin(),temps.end()); cout << "Максимальное значение вектора : " << temps << endl; }
C++ Удалить из одномерного массива промежуток элементов от максимального до минимального. http://www.cyberforum.ru/cpp-beginners/thread540900.html
кто нибудь пожалуйста напишите код Дан одномерный массив из n элементов. Удалить из массива промежуток элементов от максимального до минимального. К примеру есть массив 3 4 7 8 5 3 2 9. Должен получиться 3 4 7 9
C++ помогите с задачей Создать класс MobilePhone, содержащий следующие элементы: - поле «производитель» char* Vendor; - поле «модель» char* Model; - класс включает объект класса SIM-карта SIM* card; - метод получения названия телефона (производитель+модель) char* GetName(); - метод совершения звонка void Call() - метод отправки SMS void SendSMS(); - метод «вставить SIM» void InsertSIM(SIM card); -... подробнее

Показать сообщение отдельно
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,587
Записей в блоге: 17
07.04.2012, 18:17     Помoгите найти ошибку в коде!
У меня RAD 2009, пробуй так:
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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
#include <iostream>
#include <stdio.h>
 
 
using namespace std;
 
enum firms
{
    Sonic,
    Thomson,
    Panasonic,
    LG,
    Samsung
};
enum comp_type
{
    Portable,
    PC
};
enum mon_type
{
    JK,
    Prostoy
};
 
void set_type_name(char *&name, comp_type t) // перегруженная функция, которая записывает имя указанного типа в переменной "Имя"
{
    switch(t)
    {
        case Portable:
        strcpy(name, "Portable");
        break;
        default:
        strcpy(name, "PC");
        break;
    }
}
 
void set_type_name(char *&name, mon_type m)
{
    switch(m)
    {
        case JK:
        strcpy(name, "JK");
        break;
        default:
        strcpy(name, "Prostoy");
        break;
    }
}
 
void set_type_name(char *&name, firms f)
{
    switch(f)
    {
        case Sonic:
        strcpy(name, "Sonic");
        break;
        case Thomson:
        strcpy(name, "Thomson");
        break;
        case Panasonic:
        strcpy(name, "Panasonic");
        break;
        case LG:
        strcpy(name, "LG");
        break;
        default:
        strcpy(name, "Samsung");
        break;
    }
}
 
class product
{
    int shifr;
    char date[20];
    firms firm_pos;
    char firm_iz[120];
    int prod_count;
    public:
    product()
    {
        shifr = 0;
        //date = "1/1/2012";
        firm_pos = Thomson;
        //firm_iz = "iz";
        prod_count = 0;
    }
    void set(int i, char *d, firms f1, char *f2, int count) // установка значений
    {
        shifr = i;
        strcpy(date, d);
        firm_pos = f1;
        strcpy(firm_iz, f2);
        prod_count = count;
    }
    virtual void show_prod() // отображение информации о товаре
    {
        char *name;
        set_type_name(name, firm_pos);
        printf("%i | %s | %s | %s | %i\n", shifr, date, name, firm_iz, prod_count);
    }
    friend void show_firm(product prod[],int sz) // из массива товаров ищем товар тот, какой больше всего поставляет фирма
    {
        int tmp[5] = { // временный массив, в нем хранятся количество соотношения товар-фирма
            0, 0, 0, 0, 0
        };
        for(register int i = 0; i < sz; i++)
        {
            tmp[(int)prod[i].firm_pos]++; // перевод строки: И - это индекс из перечисления фирм текущего товара
            // то есть: тмп0 - соник, тмп1 - томпсон, тмп3 - панасоник и т.д.
            // допустим прод0.фирм_пос == Томпон
            // у Томпсона индекс == 1
            // значит при первом проходе цикла массив будет такой: 0, 1, 0, 0, 0
        }
        int max = tmp[0]; // маск
        int index = 0; // макс. индекс
        for(int i = 0; i < 5; i++) // ищем макс. индекс, что бы по нему получить имя фирмы, которая встречается чаще всего
        {
            if(max < tmp[i])
            {
                max = tmp[i];
                index = i;
            }
        }
        char *name= new char[255];
        switch(index)
        {
            case 0:
            set_type_name(name, Sonic);
            break;
            case 1:
            set_type_name(name, Thomson);
            break;
            case 2:
            set_type_name(name, Panasonic);
            break;
            case 3:
            set_type_name(name, LG);
            break;
            case 4:
            set_type_name(name, Samsung);
            break;
            default:
            set_type_name(name, Thomson);
            break;
        }
        printf("Max firm_pos: %s", name); // выводим имя фирмы
    }
};
 
class comp : public product
{
    comp_type tc;
    char produce[120];
    int type_proc;
    int gh_proc;
    int ozu;
    int vint;
    public:
    comp()
    {
        tc = PC;
        //produce = "non";
        type_proc = 0;
        gh_proc = 0;
        ozu = 0;
        vint = 0;
    }
    void set(comp_type ct, char *p, int i1, int i2, int i3, int i4) // установка
    {
        tc = ct;
        strcpy(produce, p);
        type_proc = i1;
        gh_proc = i2;
        ozu = i3;
        vint = i4;
    }
    void show_prod() // отображение информации о компе
    {
        char *name;
        set_type_name(name, tc);
        printf("%s | %s | %i | %i GHz | %i OZU | %i GB\n", name, produce, type_proc, gh_proc, ozu, vint);
    }
};
 
class monitor : public product // полностью аналогичен классу компу
{
    int width;
    int height;
    mon_type mt;
    public:
    monitor()
    {
        width = 1024;
        height = 768;
        mt = JK;
    }
    void set(int i, int j, mon_type m)
    {
        width = i;
        height = j;
        mt = m;
    }
    void show_prod()
    {
        char *name;
        set_type_name(name, mt);
        printf("Shirina %i | Visota %i | Tip %s\n", width, height, name);
    }
};
 
int main()
{
    printf("Demo\nFor exit press 'q'\n");
    const int sz = 2;
    product *p = new product[sz]; 
    /*{
        product(), product(), product(), product(), product()
    };*/
    for(int q1 = 0; q1 < sz; q1++)
    {
        int i, j, x;
        char s1[80], s2[80];
        firms f;
        printf("Input product shift: ");
        cin >> i;
        printf("Input product date: ");
        cin >> s1;
        cin.get();
        printf("Input product firm_pos (0-4): ");
        cin >> x;
        printf("Input product firm_iz: ");
        cin >> s2;
        printf("Input product prod_count: ");
        cin >> j;
        switch(x)
        {
            case 0:
            f = Sonic;
            break;
            case 1:
            f = Thomson;
            break;
            case 2:
            f = LG;
            break;
            case 3:
            f = Panasonic;
            break;
            default:
            f = Samsung;
            break;
        }
        p[i].set(i, s1, f, s2, j);
    }
    product *prod = &*p;
    printf("Dostupnie tovari:\n");
    for(int i = 0; i < sz; i++)
    {
        printf("%i: ", i);
        p[i].show_prod();
    }
    printf("Max firm--------------------------------------------\n");
    show_firm(p, sz);
    while(true)
    {
        char c;
        cin >> c;
        if(c == 'q') break;
    }
    delete [] p;
    return 0;
}
Добавлено через 5 минут
А да забыл там после
C++
1
char *name= new char[255];
где-то нужно сделать
C++
1
delete[] name;
 
Текущее время: 16:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru