перегрузка функций с++
#include <iostream.h>
#include <fstream.h>
#include <string.h>
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;
}
main()
{ 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(n); break; /* указанной в соотв. операт. case */
case 3: break;
default: cout << “\n Неверный номер!”;
}
} while (key!=3);
cout << “\n Конец программы.”;
}
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();}
\
не понимаю в чем не однозначность ? нужна помощь
это не стол заказов - на вопросы заданые на форуме - ответы даются так же на форуме
Здесь не стол заказов. Приведи свое сообщение в читаемый вид, с использованием форматирования кода и вменяемо сформулируй вопрос. Если это не будет сделано до вечера (22-00 по Киеву) - я просто удалю тему.
удаляй сейчас