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

Работа с файлами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в коде программы для кв. уравнений http://www.cyberforum.ru/cpp-beginners/thread113937.html
вопрос такой почему у меня все время ошибки в этом коде (Квадратное уравнение) Пишу в этот раздел тк я в C++ два дня #include <iostream> int AA BB CC DD X1 X2 using namespace std; int main() {...
C++ Упорядочить столбцы матрицы по убыванию их характеристик. Характеристикой столбца назовем наибольшее количество идущих подряд отрицательных элементов.Упорядочить столбцы матрицы по убыванию их характеристик. http://www.cyberforum.ru/cpp-beginners/thread113930.html
C++ Квадратное уравнение
вопрос такой почему у меня все время ошибки в этом коде (Квадратное уравнение) Пишу в этот раздел тк я в C++ два дня #include <iostream> int AA BB CC DD X1 X2 using namespace std; int main() {...
C++ поменять местами младший байт со старшим
здравствуйте всем задача такая В массиве в каждом нечетном числе поменять местами младший байт со старшим и потом найти сумму этих чисел
C++ Таблица кодировки символов http://www.cyberforum.ru/cpp-beginners/thread113889.html
Добрый день! Помогите пожалуйста написать программу, которая выводит на экран первую часть таблицы кодировки символов ( символы с кодами от 0 до 127). Таблица должна состоять из восьми колонок и...
C++ Счетчик совпадающих битов На IN_0 и IN_1 подаются два 4-х битных числа, на выходе OUT_0 - число совпадающих единичных битов во входных числах. IN_0 4бит-вх IN_1 4бит-вх OUT_0 3бит-вых подробнее

Показать сообщение отдельно
Олег@tor
9 / 9 / 1
Регистрация: 22.10.2009
Сообщений: 24
08.04.2010, 19:57
Вот, я считаю не плохая программка с комментариями для примера работы с файлами.

Условие. Написать программу, вводящую в файл или читающую из файла
ведомость студентов, сдавших экзамены. Каждая структура должна содержать
фамилию, а также оценки по математике и программированию. Вывести список
студентов, сдавших экзамен по программированию с оценкой 4, и записать эту
информацию в текстовой файл.

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
#include <iostream.h>  
#include <stdio.h>  
#include <conio.h> 
#include <stdlib.h> 
#include <string.h> 
 
 FILE *fl; 
typedef struct  
{ 
    char fio[30]; 
      unsigned char matem; 
    unsigned char oaip; 
} TStudent; 
 
     TStudent stud[30];  // Массив структур 
      char name[20];       // Имя файла 
      int nst=0;       // Число введенных структур 
int menu();        // Меню 
void nnf();            // Ввести имя файла 
void newf();     // Создать новый файл 
void spisok();       // Ввести список 
void opf();            // Открыть файл 
void resc();      // Вывести результат на экран 
void resf();       // Вывести результат в файл 
 
int main()  
{  
while (true)  
{ 
 switch (menu()) 
{ 
  case 1: nnf();    break; 
  case 2: newf();   break; 
  case 3: spisok(); break; 
  case 4: opf();    break; 
  case 5: resc();   break; 
  case 6: resf();   break; 
  case 7: return 0; 
    default: "Viberite pravilno!"; 
}  
 
 puts("Press any key to continue");  
 getch();      system("cls");  
}  
}  
 
int menu() // Меню 
{ 
 cout << "VIBERITE:" << endl; 
 cout << "1. Vvod file name" << endl; 
 cout << "2. New file" << endl; 
 cout << "3. Vvesti spisok" << endl; 
 cout << "4. Open file" << endl; 
 cout << "5. Vivesti result" << endl; 
 cout << "6. Vivesti v fail" << endl; 
 cout << "7. Exit" << endl; 
 int i; 
 cin >> i; 
 return i; 
} 
 
void nnf()       // Ввести имя файла 
{ 
  cout << "Vvedite file name" << endl; 
  cin >> name; 
} 
 
void newf()      // Создать новый файл 
{ 
 if ((fl = fopen(name,"wb"))==NULL) 
 { 
   cout << "Oshibka pri sozdanii"<<endl; 
    exit(1); 
 } 
  cout << "OK" << endl; 
 fclose(fl); 
} 
 
void spisok()       // Ввести список 
{ 
 if ((fl = fopen(name,"rb+"))==NULL) 
 { 
   cout << "Oshibka pri sozdanii"<<endl; 
    exit(1);  
 
 } 
 
 cout << "Vvedite chislo studentov " << endl; 
 cin >> nst; 
 
 for (int i=0; i<nst; i++) 
 { 
 cout << "Vvedite imya: "; 
   cin >> stud[i].fio; 
 cout << "Vvedite otcenku po matematike: "; 
   cin >> stud[i].matem; 
 cout << "Vvedite otcenku po OAiP: "; 
   cin >> stud[i].oaip; 
   fwrite( &stud[i], sizeof(TStudent), 1, fl ); 
 } 
  fclose(fl); 
} 
 
void opf()       // Открыть файл 
{ 
if ((fl = fopen(name,"rb"))==NULL) 
   { 
      cout << "Oshibka pri otkritii"<<endl; 
      exit(1); 
   } 
 
  nst=0; TStudent std; 
  while(true) 
  { 
    int  nwrt = fread( &std, sizeof(TStudent), 1, fl ); 
    if (nwrt!=1) break; 
  stud[nst]=std; 
   cout << stud[nst].fio << "  " << stud[nst].matem  
                              << "  " << stud[nst].oaip << endl; 
   nst++; 
  } 
  fclose(fl); 
} 
 
void resc()       // Вывести результат на экран 
{ 
 for (int i=0; i<nst; i++) 
  if (stud[i].oaip=='4')   
 
     cout << stud[i].fio << endl;  
} 
 
void resf()      // Вывести результат в файл 
{ 
char namet[30]; 
FILE *ft; 
 cout << "Vvedite imya faila" << endl; 
  cin >> namet; 
if ((ft = fopen(namet,"w"))==NULL) 
   { 
      cout << "Oshibka pri sozdanii "<<endl; 
      exit(1); 
   } 
 char s[80]; 
 for (int i=0; i<nst; i++) 
  if (stud[i].oaip=='4')  
   { 
   strcpy(s, stud[i].fio); 
    strcat(s, "\n");          // Добавление разделителя строк  
    fputs(s, ft); 
    } 
 fclose(ft); 
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.