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

Правильно ли я написал? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Расскажите пожалуйста про флаги http://www.cyberforum.ru/cpp-beginners/thread341362.html
Доброго времени суток. Помогите пожалуйста разобраться с фалагми. Вот код: #include <iostream> #define ID_F 1001 #define ID_D 1002 #define ID_E 1003 using namespace std; int main() { int n = ID_F; if(n&ID_F)
C++ как можно ипользовать многомерный массив? Изучил массивы и стало интересно,как можно использовать многомерные массивы, в книги не написано про их использование а только упомянуто их существование. http://www.cyberforum.ru/cpp-beginners/thread341343.html
C++ Использование указателя на объект шаблонного класса в шаблонном классе.
Всем привет! Мне нужно реализовать граф. Начал с вершин и ребер, причем и ребра и вершины - шаблонные классы, для того чтобы и ребро и вершина могли содержать разные данные. В ребре указатели на 2 вершины. Класс вершины: template <class T> class Vertex { private: char* name; T data;
Точка выхода в вижуал С++ 2010 C++
В сях я нуб полнейший%-), но быстро усовершенствуюсь, и решил освоить этот язык. Вроде для начала все раздуплил. Создал ЦЛР проэкт и давай накидывать туды всякой всячины (ну типа интерфейс замутил знатный:)), жамкаю на кнопку запуска отладки...все нормально...все нормально....и туд БАБАХХХХ!!!:black_eye.: ошибка что какой-то файл спп не найден и в логе запись 1>LINK : fatal error LNK1561: точка...
C++ Unsigned integer 24 bit http://www.cyberforum.ru/cpp-beginners/thread341301.html
Как можно объявить беззнаковый integer размером в 24 бита? Если я объявлю его как битовое поле в структуре, например так: struct rgb { unsigned r:24; unsigned g:24; unsigned b:24; };
C++ Массив функций Есть функция: bool sota(a& d1, a& d2) {return 1;} Я вызываю её вот так: sort(mas->begin(), mas->end(), sota); Мне нужно сделать массив из 10 функций sota, с разными значениями return. К примеру: sota(a& d1, a& d2) {return 7;} sota(a& d1, a& d2) {return 4;} sota(a& d1, a& d2) {return 20;} подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 14:59     Правильно ли я написал?
jafrey kerns, посмотрите на мой код (пост №16) и на ваш.

Вообще, если я правильно понял, что вы хотите, то вот:

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
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string.h>
#include <math.h>
 
using namespace std;
 
const int buffer_size = 64;
char buffer[ buffer_size ];
 
vector<double> nominals;
 
void add_nominal();
void ls_nominals();
void rm_nominal();
bool read_nominals( char * filename );
bool write_nominals( char * filename );
void check_nominals();
 
const char * operation_not_premitted = "Operation is not premitted: no nominals are loaded.\n";
 
int main()
{
    cout << "Welcome!\n";
    int choice;
 
    while( 1 )
    {
        cout << "\n--- Main menu ---\n1) Check nominals\n2) Add a nominal\n3) Remove a nominal\n4) List all nominals\n5) Load nominals\n6) Save nominals\n\n0) Quit\n\n> ";
 
        cin.sync();
        cin >> choice;
        cin.sync();
 
        if( choice == 0 )
           break;
 
        switch( choice )
        {
            case 1:
               if( nominals.size() == 0 )
                  cout << operation_not_premitted << endl;
               else
                  check_nominals();
               break;
 
            case 2:
               add_nominal();
               break;
 
            case 3:
               if( nominals.size() == 0 )
                  cout << operation_not_premitted << endl;
               else
                  rm_nominal();
               break;
 
            case 4:
               if( nominals.size() == 0 )
                  cout << operation_not_premitted << endl;
               else
                  ls_nominals();
               break;
 
            case 5:
               cout << "Please enter file name > ";
               cin.getline( buffer, buffer_size );
               read_nominals( buffer );
               break;
 
            case 6:
               if( nominals.size() == 0 )
               {
                  cout << operation_not_premitted << endl;
                  break;
               }
 
               cout << "Please enter file name > ";
               cin.getline( buffer, buffer_size );
               write_nominals( buffer );
               break;
        }
    }
 
    cout << "Goodbye!" << endl;
 
    return 0;
}
 
void add_nominal()
{
    double a;
 
    cin.sync();
    cout << "Please enter nominal > ";
    cin >> a;
    cin.sync();
 
    for( unsigned i = 0; i < nominals.size(); i++ )
    {
        if( nominals[i] == a )
        {
           cerr << "This value is already in the list" << endl;
           return;
        }
    }
 
    nominals.push_back( a );
}
 
void ls_nominals()
{
    cout << "\n----------\n";
 
    for( unsigned i = 0; i < nominals.size(); i++ )
       cout << nominals[i] << '\n';
 
    cout << "----------\nTOTAL: " << nominals.size() << endl;
}
 
void rm_nominal()
{
    double a;
 
    cout << "Please enter nominal > ";
    cin.sync();
    cin >> a;
    cin.sync();
 
    remove( nominals.begin(), nominals.end(), a );
 
    cout << "Done." << endl;
}
 
bool read_nominals( char * filename )
{
    ifstream fs( filename );
 
    if( !fs.is_open() )
    {
        cerr << "Could not open file" << endl;
        return false;
    }
 
    fs >> buffer;
 
    if( strcmp( buffer, "!resistors" ) ) /* если первое слово файле - НЕ "!resistors" */
    {
        cerr << "Invalid file" << endl;
        fs.close();
        return false;
    }
 
    /* очищаем список номиналов */
    nominals.clear();
 
    unsigned count;
    fs >> count;
 
    if( count <= 0 )
    {
        cerr << "No values in possibly valid file" << endl;
        fs.close();
        return true;
    }
 
    cout << "The file seems to be valid. " << count << " resistors specified." << endl;
 
    nominals.resize( count );
 
    for( unsigned i = 0; i < count; i++ )
    {
        if( fs.eof() )
        {
            cerr << "Unexpected end of file. " << i << "elements read." << endl;
            break;
        }
 
        if( fs.fail() )
        {
            cerr << "Error interpreting value. " << i << "elements read." << endl;
            break;
        }
 
        if( fs.bad() )
        {
            cerr << "Unknown error. " << i << "elements read." << endl;
            break;
        }
 
        fs >> nominals[i];
    }
 
    cout << "Nominals are loaded." << endl;
 
    fs.close();
}
 
bool write_nominals( char * filename )
{
    ofstream fs( filename );
 
    if( !fs.is_open() )
    {
        cerr << "Could not open file" << endl;
        return false;
    }
 
    fs << "!resistors " << nominals.size() << '\n';
 
    for( unsigned i = 0; i < nominals.size(); i++ )
    {
        if( fs.fail() || fs.bad() )
        {
           cerr << "Unknown error while writing. " << i << " nominals are saved, but file may be corrupt. Please resave." << endl;
           break;
        }
 
        fs << nominals[i] << ' ';
    }
 
    cout << "Nominals are saved." << endl;
 
    fs.close();
}
 
void check_nominals()
{
    double R1;
    cout << "Please enter the desired nominal in kOm > ";
    cin.sync();
    cin >> R1;
 
    for ( unsigned i = 0; i < nominals.size(); i++ ) // проверка наличия резисторов на складе
    {
            double dopusk = fabs( R1 - nominals[i] );
            if ( dopusk <= 0.1 )
            {
                cout << nominals[i] << " is found\n";
                break;
            }
    }
 
    cout << "You can use parallel connection of:\n";
 
    // расчет необходимых номиналов для параллельного соединения из того, что есть в наличии
    for ( unsigned a = 0; a < 10; a++ )
    {
            for ( unsigned b = nominals.size() - 1; b > 10; b-- )
            {
                    double r1 = nominals[a];
                    double r2 = nominals[b];
                    double pres = fabs((r1*r2)/(r1+r2));
                    double dop = fabs(R1-pres);
                    if (dop < 0.05)
                        cout << "   " << r1 << " & " << r2 << "\n"; // вывод на экран всех вариантов
            }
    }
}
Проверяет номиналы (ход расчёта я не менял, только подогнал под новые условия), добавляет номинал в список, удаляет номинал из списка, загружает номиналы из файла и сохраняет их в файл.

Вот файл:
Код
!resistors 52
13 13.3 14 14.7 15 15.4 16 16.5 20 22 24 27 30 31 33 33.2 36 39 39.2 40.2 47 48.7 51 56 62 63.4 75 82 91 100 118 120 150 180 200 220 240 270 300 316 324 330 360 390 432 470 510 620 680 750 787 1000
Удачи.

P.S.

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