Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программируемая логика: ПЛИС, ПАИС
Войти
Регистрация
Восстановить пароль
 
kkonstantine
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 8
1

Проблемы с файлом на c++

28.11.2019, 12:36. Просмотров 148. Ответов 0

Данные файла не сохраняются, при просмотре файла таблица кривая. Ещё нужно добавить защиту от некорректного ввода целых чисел(например при выборе пункта меню), некорректного ввода чисел с плавающей запятой(мне нужно перенести функции с одной программы(которая не в visual studio) в мою. Программа запускается в Visual Studio. Помогите исправить и написать защиту пожалуйста. Ниже я вставлю код своей программы и другой программы(из которой нужно использовать функции защиты от некорректного ввода int cori(); для целых чисел, float corf() для чисел с плавающей запятой и отдельно эти функции.

Код моей программы
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
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
#include <iostream>
#include<string>
#include<fstream>
#include<Windows.h>
#include<cstdio>
using namespace std;
 
//Начало глобальных переменных
int n = NULL;
string default_file = "default.dat";
string file_for_work = ".dat";
 
ofstream zapis_na_file;
ifstream cztenie_iz_faila;
ifstream cztenie_nomera_faila;
ofstream zapis_nomera_faila;
string file_with_number("numbs.dat");
string current_working_base;
string all_inform_toys[99][6];
int nomer = 1;
string words_by_mas[6] = { "Номер: " , "Название: " , "Производитель: " , "Цена: " , "Возраст от: " , "до: " };
//Конец объявления глобальных переменных
//Методы работы с файлами
int finderFiles() {
    float numberss = NULL;
    cztenie_nomera_faila.open(file_with_number);
 
    cztenie_iz_faila >> numberss;
    n = (int)numberss;
    cztenie_nomera_faila.close();
    return n;
}
void newNumberFiles() { //Метод, который проверяет сколько создано копий
 
    zapis_nomera_faila.open(file_with_number, ios::out);
    n++;
    zapis_nomera_faila << to_string(n);
    zapis_nomera_faila.close();
}
//Данный метод создает файл с номером
void createNewFile() {
    system("cls");
    ofstream newfile(to_string(n) + file_for_work);
    cout << "Выполнено, созданный файл:  " << n << ".dat" << endl;
    current_working_base = to_string(n) + ".dat";
    cout << "Сейчас открыто файл: " << n << endl;
    newNumberFiles();
 
}
void openFile() {
    system("cls"); //Данный метод позволяет загрузить созданные ранее файлы
    int zagruzocznaya_baza;
    cout << "Файл открыть? От 0-" << n << endl << "Ваш выбор: ";
    cin >> zagruzocznaya_baza;
    current_working_base = to_string(zagruzocznaya_baza) + ".dat";
 
}
void saveToFile() { // Данный метод сохраняет данные в файл
    system("cls");
    if (current_working_base.empty()) {
        int choice_by_user = NULL;
        cout << "На данный момент, не загружен ни один файл. Создайте или загрузите файл" << endl;
        cout << "1. Создать" << endl << "2. Загрузить" << endl << "Ваш выбор: ";
        cin >> choice_by_user;
        switch (choice_by_user)
        {
        case 1:
            createNewFile();
            break;
        case 2:
            openFile();
            break;
        default:
            break;
        }
 
    }
    else {
        zapis_na_file.open(current_working_base, ios::app);
        string names;
        string producents;
        string coszt;
        string vozrot;
        string vozrdo;
        cout << endl << "Добавление предмета (ТОЛЬКО ЛАТИНИЦЕЙ!)" << endl;
        cout << "Название изделия: ";
        cin >> names;
        cout << '\n';
        cout << "Производитель: ";
        cin >> producents;
        cout << '\n';
        cout << "Стоимость: ";
        cin >> coszt;
        if (coszt.empty()) {
            cout << "Неверное значение!" << endl;
        }
        cout << '\n';
        cout << "Возраст от: ";
        cin >> vozrot;
        cout << '\n';
        cout << "Возраст до: ";
        cin >> vozrdo;
        cout << '\n';
        zapis_na_file << nomer << ";" << names << ';' << producents << ';' << coszt << ';' << vozrot << ';' << vozrdo << ';' << endl;
        nomer++;
        zapis_na_file.close();
        system("cls"); cout << "Запись завершена " << endl; system("cls");
    }
 
}
void readFromFile() {
    system("cls"); // Данный метод считывает из файла
    if (n == NULL) {
        openFile();
    }
    else {
        cout << "Начинаю чтение из файла: " << n << endl;
        cztenie_iz_faila.open(current_working_base);
        string word;
 
        int ryad = 0;
        int dlina = 0;
        int dwad = 0;
        string s;
        cout << "|------------------------|----------------------------|---------------------|--------------|----------------|---------------|";
        if (!cztenie_iz_faila) {
            cout << "ОШИБКА!";
        }
        else {
 
            while (cztenie_iz_faila) {
                getline(cztenie_iz_faila, s, ';');
                all_inform_toys[ryad][dlina] = s;
                dwad = dlina;
                cout << "|" << words_by_mas[dwad] << all_inform_toys[ryad][dlina] << "|";
                dlina++;
                dwad = dlina;
                if (dwad == 7)
                {
                    dwad = 0;
 
                }
 
                if (dlina == 7) {
                    cout << "---------------------------------------------------------------------" << endl;
                    ryad++;
                    dlina = 0;
                }
            }
 
            cztenie_iz_faila.close();
        }
    }
}
void editFile() {// Метод для редактирования данных
    readFromFile();
    int vybor = 0;
    int pozition = 0;
    string nazv;
    string produk;
    int cena = 0;
    int vozrot = 0;
    int vozrdo = 0;
 
    cout << endl << "Какую позицию вы хотите изменить? " << endl << "Выбор: ";
    cin >> pozition;
    cout << "Позиция: " << all_inform_toys[pozition][0] << endl;
    cout << "1. Название: " << all_inform_toys[pozition][1] << endl;
    cout << "2. Производитель: " << all_inform_toys[pozition][2] << endl;
    cout << "3. Стоимость: " << all_inform_toys[pozition][3] << endl;
    cout << "4. Возраст от: " << all_inform_toys[pozition][4] << endl;
    cout << "5. Возраст до: " << all_inform_toys[pozition][5] << endl;
    cout << "Что вы хотите изменить: ";
    cin >> vybor;
 
    switch (vybor) //Ввод данных
    {
    case 1:
        cout << "Введите новое название: ";
        cin >> nazv;
        all_inform_toys[pozition][1] = nazv;
        break;
    case 2:
        cout << "Кто новый производитель: ";
        cin >> produk;
        all_inform_toys[pozition][2] = produk;
        break;
    case 3:
        cout << "Новая стоимость: ";
        cin >> cena;
        all_inform_toys[pozition][3] = cena;
        break;
    case 4:
        cout << "Новый возраст от: ";
        cin >> vozrot;
        all_inform_toys[pozition][4] = vozrot;
 
        break;
    case 5:
        cout << "Новый возраст до: ";
        cin >> vozrdo;
        all_inform_toys[pozition][5] = vozrdo;
        break;
    default:
        break;
    }
    zapis_na_file.open(current_working_base, ios::out);
 
    int i = 0;
    bool vmest = true;
    while (vmest)
    {
 
 
 
 
        zapis_na_file << all_inform_toys[i][0] << ";" << all_inform_toys[i][1] << ';' << all_inform_toys[i][2] << ';' << all_inform_toys[i][3] << ';' << all_inform_toys[pozition][5] << ';' << all_inform_toys[pozition][5] << ';' << endl;
        if (all_inform_toys[i][0].empty()) {
            vmest = false;
            break;
        }
 
 
 
        i++;
 
    }
 
 
    zapis_na_file.close();
    cout << "Запись завершена " << endl;
}
 
 
 
 
void sortFile() { // Метод сортировки
    readFromFile();
    int cena = 0;
    string nameold;
    string producentold;
    string ot;
    string dot;
    cout << "Сортировка от высокой стоимости к низкой:" << endl;
    bool mas = true;
    int ix = 0;
    while (mas)
    {
        ix++;
        if (all_inform_toys[ix - 1][3] > all_inform_toys[ix][3]) {
            to_string(cena) = all_inform_toys[ix - 1][3];
            producentold = all_inform_toys[ix - 1][2];
            nameold = all_inform_toys[ix - 1][1];
            ot = all_inform_toys[ix - 1][4];
            dot = all_inform_toys[ix - 1][5];
            // Меняем меньшее значение на более
            all_inform_toys[ix - 1][3] = all_inform_toys[ix][3];
            all_inform_toys[ix - 1][2] = all_inform_toys[ix][2];
            all_inform_toys[ix - 1][1] = all_inform_toys[ix][1];
            // Меняем большее значение на меньшее
            all_inform_toys[ix][3] = to_string(cena);
            all_inform_toys[ix][2] = producentold;
            all_inform_toys[ix][1] = nameold;
            to_string(cena).clear();
            producentold.clear();
            nameold.clear();
            cout << "Позиция: " << all_inform_toys[ix - 1][0] << endl;
            cout << "1. Название: " << all_inform_toys[ix - 1][1] << endl;
            cout << "2. Производитель: " << all_inform_toys[ix - 1][2] << endl;
            cout << "3. Стоимость: " << all_inform_toys[ix - 1][3] << endl;
            if (all_inform_toys[ix][0].empty())
            {
                mas = false;
            }
 
        }
    }
 
}
void searchFile() {//Метод поиска
    readFromFile();
    int user_choice = 0;
    int nomer = 0;
    string nazvanie;
    string producent;
    int cena = 0;
    int vozrot = 0;
    int vozrdo = 0;
    cout << "По каким критериям ищем? " << endl
        << "1. По номеру" << endl
        << "2. По названию " << endl
        << "3. По производителю" << endl
        << "4. По цене" << endl;
    cout << "Ваш выбор: ";
    cin >> user_choice;
    bool createfile = true;
    bool createfile1 = true;
    bool createfile2 = true;
    bool createfile3 = true;
    bool createfile4 = true;
    switch (user_choice)
    {
    case 1:
        cout << "Введите искомый номер: ";
        cin >> nomer;
 
 
        while (createfile) {
            for (int i = 0; i < 10; i++)
            {
                if (all_inform_toys[i][0] == to_string(nomer)) {
                    cout << "Позиция: " << all_inform_toys[i][0] << endl;
                    cout << "1. Название: " << all_inform_toys[i][1] << endl;
                    cout << "2. Производитель: " << all_inform_toys[i][2] << endl;
                    cout << "3. Стоимость: " << all_inform_toys[i][3] << endl;
                    cout << "4. Возраст от: " << all_inform_toys[i][4] << " до " << all_inform_toys[i][5] << endl;
                    createfile = false;
                }
            }
        }
        break;
    case 2:
        cout << "Введите искомую название: ";
        cin >> nazvanie;
 
 
        while (createfile1) {
            for (int i = 0; i < 10; i++)
            {
                if (all_inform_toys[i][1] == nazvanie) {
                    cout << "Позиция: " << all_inform_toys[i][0] << endl;
                    cout << "1. Название: " << all_inform_toys[i][1] << endl;
                    cout << "2. Производитель: " << all_inform_toys[i][2] << endl;
                    cout << "3. Стоимость: " << all_inform_toys[i][3] << endl;
                    cout << "4. Возраст от: " << all_inform_toys[i][4] << " до " << all_inform_toys[i][5] << endl;
                    createfile = false;
                }
 
 
            }
        }
        break;
    case 3:
        cout << "Введите искомого производителя: ";
        cin >> producent;
 
 
        while (createfile2) {
            for (int i = 0; i < 10; i++)
            {
                if (all_inform_toys[i][2] == producent) {
                    cout << "Позиция: " << all_inform_toys[i][0] << endl;
                    cout << "1. Название: " << all_inform_toys[i][1] << endl;
                    cout << "2. Производитель: " << all_inform_toys[i][2] << endl;
                    cout << "3. Стоимость: " << all_inform_toys[i][3] << endl;
                    cout << "4. Возраст от: " << all_inform_toys[i][4] << " до " << all_inform_toys[i][5] << endl;
                    createfile = false;
                }
                else {
                    continue;
                }
 
            }
        }
        break;
    case 4:
        cout << "Введите искомую цену: ";
        cin >> cena;
 
 
        while (createfile3) {
            for (int i = 0; i < 10; i++)
            {
                if (all_inform_toys[i][2] == to_string(cena)) {
                    cout << "Позиция: " << all_inform_toys[i][0] << endl;
                    cout << "1. Название: " << all_inform_toys[i][1] << endl;
                    cout << "2. Производитель: " << all_inform_toys[i][2] << endl;
                    cout << "3. Стоимость: " << all_inform_toys[i][3] << endl;
                    cout << "4. Возраст от: " << all_inform_toys[i][4] << " до " << all_inform_toys[i][5] << endl;
                    createfile = false;
                }
                else {
                    continue;
                }
 
 
            }
 
        }
        break;
 
    default:
        break;
    }
}
void deleteCurrentBase() {
 
    int current = NULL;
    cout << "Какой удалить: ";
    cin >> current;
    string basix = to_string(current) + file_for_work;
    remove(basix.c_str());
 
 
}
 
// Конец методов работы с файлами
 
// Конец объявлений
int main()
{
    n = finderFiles();
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "Russian");
    int vyborRus = NULL;
    while (1) {
        
        int vyborRus;
        cout << "1. Создать новый файл" << endl
            << "2. Загрузить файл" << endl
            << "3. Посмотреть данные файла" << endl
            << "4. Добавить данные" << endl
            << "5. Редактировать данные" << endl
            << "6. Сортировать данные" << endl
            << "7. Поиск данных" << endl
            << "8. Выход" << endl
            << "9. Удаление открытого файла" << endl;
        cout << "Ваш вибор: ";
        cin >> vyborRus;
        switch (vyborRus) {
        case 1:
            createNewFile();
            break;
        case 2:
            openFile();
            break;
        case 3:
            readFromFile();
            break;
        case 4:
            saveToFile();
            break;
        case 5:
            editFile();
            break;
        case 6:
            sortFile();
            break;
        case 7:
            searchFile();
            break;
        case 8:
            exit(0);
            break;
        case 9:
            deleteCurrentBase();
            break;
        default:
            break;
        }
 
    }
}
Программа с функциями cori() и corf()
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
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
#include <limits.h>
#include <errno.h>
#include <string.h>
struct student
{ char fio[20];
  int curs;
  float r;
  char fkur[20];
};
 char *Name[10] = {"Ivanov","Petrov","Dronov","Krotov","Sorin","Polin"};
char *(*ptr)[10] = &Name;
void intake();
void View();
int cori();
float corf();
void sort();
 
int main()
 
{ clrscr();
int i(0);int p;
while (i!=4)
{clrscr();
cout<<endl<<"MAIN MENU ";
cout<<endl<<"1: Entering student information ";
cout<<endl<<"2: View student information ";
//cout<<endl<<"3: Processing request ";
cout<<endl<<"4: Exit from the program ";
cout<<endl<<endl<<"select a menu item ";
 
  i=cori();
  
 
  switch(i)
   {  case 1: { intake(); break; }
      case 2: { View();  break; }
     // case 3: { Process(); break; }
     
      case 4: { cout<<endl<<" Exit the program. Click of Enter ";
                 getch(); return 0;   }
     default: { cout<<endl<<"Improper input of interval "<<endl;
            cout<<endl<<"Repeat an input. "<<endl; getch();}
    }
    
 }
return 0;
}
 
 
void intake()
{
  student st;// буферная переменная - 1 студент
  char c='y';
  int p;
 
 
ofstream inf("f:/stud1.dat", ios::binary|ios::app); 
if (!inf) // если файл не открыт
 {    cout <<endl<< "The file cannot be opened\n"; // сообщить об этом
     getch();
    return ;
 }
while (c=='y')
   { cout<<endl<<" Enter Surname ";
     cin>>st.fio;
     cout<<endl<<" Enter Cours ";
    do
{ p=1;
  st.curs=cori();
  if ( st.curs<1 || st.curs>4 )
    { p=0;
      cout<<endl<<"Improper input of interval "<<endl;
      cout<<endl<<"Repeat an input. "<<endl;
    }
} while (p==0);
     cout<<endl<<" Enter Raiting ";
   do
{ p=1;
  st.r=corf();
  if ( st.r<1. || st.r>5. )
    { p=0;
      cout<<endl<<"Improper input of interval "<<endl;
      cout<<endl<<"Repeat an input. "<<endl;
    }
} while (p==0);
    
     cout<<endl<<" Enter Counsel ";
     
{
    
 
    for(int i=0;i<6;i++)
    cout<<endl<<i+1<<"  "<<(*ptr)[i];
 
 cout<<endl<<"Enter number ";
  int k;
  do
{ p=1;
  k=cori();
  if ( k<1 || k>6 )
    { p=0;
      cout<<endl<<"Improper input of interval "<<endl;
      cout<<endl<<"Repeat an input. "<<endl;
    }
} while (p==0);
   
strcpy(st.fkur,(*ptr)[k-1]);
  //cout<<endl<<"st.fkur="<< st.fkur;
 getch();
}
 
 
     inf.write((char*)&st, sizeof(st));
     cout<<endl<<" Continue? ";
     cin>>c;
   }
inf.close();
 
return;
}
 
 
void View()
{
 sort();
 student st;// буферная переменная - 1 студент
  int i(0); //  счётчик записей
ifstream std("f:/stud1.dat", ios::binary|ios::in); 
if (!std) // если файл не открыт
 {    cout <<endl<< "The file cannot be opened\n"; // сообщить об этом
     getch();
    return;
 }
 
 cout<<endl;
    cout.width(3); cout<<"#%";
   cout.width(15); cout<<"Surname";
   cout.width(15); cout<<"Cours";
   cout.width(15); cout<<"Raiting";
   cout.width(15); cout<<"Counsel";
while (std.read((char*)&st, sizeof(st)))
 { i++;
  cout<<endl;
   cout.width(3); cout<<i;
   cout.width(15); cout<<st.fio;
   cout.width(15); cout<<st.curs;
   cout.width(15); cout<<st.r;
    cout.width(15); cout<<st.fkur;
  }
 getch();
std.close();
}
/*
void Process()
{
  student st;// буферная переменная - 1 студент
  int i(0); //  счётчик отличников
ifstream std("f:/stud1.dat", ios::binary|ios::in); 
if (!std) // если файл не открыт
 {    cout <<endl<< "The file cannot be opened\n"; // сообщить об этом
     getch();
    return;
 }
 
 cout<<endl;
    cout.width(3); cout<<"#%";
   cout.width(25); cout<<"Surname";
   cout.width(20); cout<<"Cours";
   cout.width(20); cout<<"Raiting";
while (std.read((char*)&st, sizeof(st)))
 { 
  if (st.r==5)
    {i++;
      cout<<endl;  
      cout.width(3); cout<<i;
      cout.width(20); cout<<st.fio;
      cout.width(20); cout<<st.curs;
      cout.width(20); cout<<st.r;
    }
 }
if (i==0) cout<<endl<<"There are no excellent students";
getch();
std.close();
}
 
*/
 
int cori()
{
char* s3; char* end;
int k=0;    // флажок прекращения некорректного ввода
long x; 
cout<<endl<<" Enter an integer "<<endl;
do
 {
cin.sync();
 gets(s3);  // считывания строки из входного потока
 
  x=strtol(s3,&end,10);
  if (*end )
  {
   cout<<endl<<"Improper input of integer "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
  }
  else
   { 
     if ((x >= LONG_MAX || x <= LONG_MIN) && errno == ERANGE)
    
     {
      cout<<endl<<"Improper input of integer "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
     }
     else
     { k=1;
      
 
     }
   }
  } while (k==0);
 
return x;
}
 
float corf()
{
char* s3; char* end;
int k=0;    // флажок прекращения некорректного ввода
float x; 
cout<<endl<<" Enter an real"<<endl;
do
 {
 gets(s3);  // считывания строки из входного потока
 cin.sync();
 
  if (strtod(s3,&end)==0)
  {
   cout<<endl<<"Improper input of real. "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
  }
  else
   { 
     x=strtod(s3,&end);
     if (strlen(end)!=0)
     {
      cout<<endl<<"Improper input of real. "<<endl;
      cout<<endl<<"Repeat an input. "<<endl;
     }
     else
     { k=1;
      
     }
   }
  } while (k==0);
 
return x;
}
 
void sort()
 
{ clrscr();
  student st, st1;// буферная переменная - 1 студент
  char c='y';
  int i(0),j, k(1);
 
 
fstream sor("f:/stud1.dat", ios::binary|ios::in|ios::out); 
if (!sor) // если файл не открыт
 {    cout <<endl<< "The file cannot be opened\n"; // сообщить об этом
     getch();
    return ;
 }
 
while(k!=0)
{ k=0;i=0; sor.clear(); sor.seekg(0); 
  sor.read((char*)&st, sizeof(st));
  while (sor.read((char*)&st1, sizeof(st)))
 {  
   if (st1.r>st.r)
      { sor.seekg(i*sizeof(st)); 
        sor.write((char*)&st1, sizeof(st));
    sor.write((char*)&st, sizeof(st));
     i++;
     k++;
 
      }
    else
    {st=st1; i++;}
 
  }
}
 
sor.close();
return;
}

Функция cori()
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
int cori()
{
char* s3; char* end;
int k=0;    // флажок прекращения некорректного ввода
long x; 
cout<<endl<<" Enter an integer "<<endl;
do
 {
cin.sync();
 gets(s3);  // считывания строки из входного потока
 
  x=strtol(s3,&end,10);
  if (*end )
  {
   cout<<endl<<"Improper input of integer "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
  }
  else
   { 
     if ((x >= LONG_MAX || x <= LONG_MIN) && errno == ERANGE)
    
     {
      cout<<endl<<"Improper input of integer "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
     }
     else
     { k=1;
      
 
     }
   }
  } while (k==0);
 
return x;
}

Функция corf()
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
float corf()
{
char* s3; char* end;
int k=0;    // флажок прекращения некорректного ввода
float x; 
cout<<endl<<" Enter an real"<<endl;
do
 {
 gets(s3);  // считывания строки из входного потока
 cin.sync();
 
  if (strtod(s3,&end)==0)
  {
   cout<<endl<<"Improper input of real. "<<endl;
   cout<<endl<<"Repeat an input. "<<endl;
  }
  else
   { 
     x=strtod(s3,&end);
     if (strlen(end)!=0)
     {
      cout<<endl<<"Improper input of real. "<<endl;
      cout<<endl<<"Repeat an input. "<<endl;
     }
     else
     { k=1;
      
     }
   }
  } while (k==0);
 
return x;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2019, 12:36
Ответы с готовыми решениями:

Проблемы с XML файлом.
mr_dronski вы писали программку для Нади. Мне тоже нужно было такуюже написать, но там структура...

Проблемы с файлом resx
Проект не хочет компилироваться. Ошибка: не удалось обработать файл &quot;Form.resx&quot;, так как он...

Проблемы с командным файлом
Здравствуйте! Есть следующее задание: 1. Вывести на экран текущую дату. 2. Установить текущим...

Проблемы с бинарным файлом
Приветствую. Проблема заключается в следующем: не хочет открываться бинарный файл. #include...

Проблемы с .exe файлом
При запуске .exe файла выводит сообщение: &quot;Версия этого файла несовместима с использованием...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2019, 12:36

Проблемы с файлом css
Добрый день, в шаблоне требуется немного изменить стиль: изменить цвет меню и убрать картинку перед...

Проблемы с файлом offers.xml в УТ 10
После переустановки системы &quot;Управление торговлей&quot; редакция 10.3.18.4 возникли проблемы с записью...

Проблемы с файлом .htaccess, индексация в Яндексе
Приветствую! Нужно чтобы в индексе Яндекса были страницы только со слешем / наконце; правильно я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.