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

перегрузка функции << и >> - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку http://www.cyberforum.ru/cpp-beginners/thread591458.html
При компилирование Debug все работает отлично. Если компилирую Release то, компилируется нормально, но когда запускаю выдает ошибку. "Библиотека времени выполнения Microsoft Visual Studio C...
C++ Работа с массивом.Обработка текстов Задача: Определить порядковые номера, считая от начала текста, определенных символов, которые задаются в исходных данных, заменить пробелами все такие символы, имеющие нечетные номера.... http://www.cyberforum.ru/cpp-beginners/thread591456.html
Дан файл, каждая запись которого содержит тройки чисел C++
Добрый день. Помогите пожалуйста с прогой: Дан файл, каждая запись которого содержит тройки чисел, соответствующих координатам центра и радиусу окружности. Построить на экране все окружности по...
C++ Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа. Простые числа это когда они делятся только на себя и на единицу Пожалуйста помогите решить не...
C++ Копирование файла не используя системные библиотеки. нужен совет http://www.cyberforum.ru/cpp-beginners/thread591438.html
Нужно скопировать один файл в другой( названия вводятся с клавиатуры). написал, но не работает комп виснит, а в директории появляется файл весом 75мб, совершенно с другими символами. может быть ыв...
C++ Вывести для массива на экран сначала элементы, стоящие на четных местах, потом — на нечетных Есть небольшое задание, нужна помощь: 1) Использование условий для изменения элементов массива и вывода их на экран >> Задан массив. Вывести на экран сначала его элементы, стоящие на четных... подробнее

Показать сообщение отдельно
antoha398
156 / 156 / 3
Регистрация: 29.03.2012
Сообщений: 418
30.05.2012, 19:43
вот проверьте
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
#include <iostream>
#include <fstream>
 
using namespace std;
char group[8]= "\0";
  char otchet[10]= "Print.txt";
  struct anketa         /* Объявление структуры нового типа (anketa), */
{ int num; int n;       /* описание полей (элементов) структуры       */
  char Fam[20];
  int dd,mm,yyyy;
  char pol[2];
  char address[40];
  friend istream& operator >> (istream& is, anketa &dan);
  //friend ofstream& operator << (ofstream& ofs, anketa &dan);
  friend ostream& operator << (ostream& os, anketa &dan);
};
// Переопределение стандартной операции при помощи операторной функции
  istream& operator>> (istream& is, anketa& dan)
{
  cout << "\n Num:"; is>>dan.num;
  cout << "\n Fam:"; is>>dan.Fam;
  cout << "\n Data rozhdeniya:";
  cout << "\n Day:"; is>>dan.dd;
  cout << "\n Month:"; is>>dan.mm;
  cout << "\n Year:"; is>>dan.yyyy;
  cout << "\n Pol:"; is>>dan.pol;
  cout << "\n Address:"; is>>dan.address;
  return is;
}
  ostream& operator << (ostream& os, anketa& dan)
{ char str[80];
  sprintf(str, "\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|",
  dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
  str[79]= '\0';
  os<<str;
  return os;
}
/*  ofstream& operator << (ofstream& ofs, anketa& dan)
{ char str[80];
  sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,
  dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
  str[79]= ‘\0’;
  ofs<<str;
  return ofs;
}*/
 void vvod();
 void vivod();
 
int main()
{
    setlocale(LC_CTYPE,"RUS");
    int key=0;
  do  {  cout << "\n             Меню               ";
         cout << "\n         1 - Ввод               ";
         cout << "\n         2 - Вывод              ";
         cout << "\n         3 - Конец              ";
         cout << "\n  Введите номер пункта меню:    ";
         cin >> key;
           switch(key)
        {  case 1: cout << "\n Введите группу"; /* Обработка события выбора пункта */
                   cin >> group;                /* меню- при вводе номера пункта   */
                   vvod(); break;               /* происходит выполнение функции,  */
           case 2: vivod(); break;             /* указанной в соотв. операт. case */
           case 3: break;
           default: cout << "\n Неверный номер!";
        }
      } while (key!=3);
  cout << "\n Конец программы.";
  return 0;
}
  void vvod()
  { int i, n =0;
  struct anketa A;
  cout << "\n Сколько анкет ввести? ";
  cin >> n;
  ofstream fout;                        // Создание 1 потока с именем fout для вывода
  fout.open(group, ios::out|ios::app);  /* Связывание потока с файлом (group) и */
    for(i=0;i<n;i++)                    /* определение режимов работы с ним     */
    { cout << "\n Ввод ” << i+1 << “-ой анкеты";
    cin >> A;
    fout.write((char*)&A,sizeof(struct anketa)); /* Вставка записи размером struct */
                                                 /* anketa в из области памяти по  */
                                                 /* указат. &A в поток вывода fout */
  } fout.close();                       // Закрытие потока, разрыв связи с файлом
}
 
  void vivod()
{ struct anketa A;
  ofstream fout(otchet,ios::out);
  fout << "список студентов группы " << group;
  ifstream fin;
  fin.open(group, ios::binary);
    while(!fin.read((char*)&A, sizeof(struct anketa)).eof())
  { fout<< A;
  }
  fout.close();}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru