поля: имя фамилия группа крови дата рождения пол
методы: ввод вывод операция по перемене пола вычисление возраста
кто может черкните как...

предмет POO
язык Си
Модератор: Злобный
Код: Выделить всё
struct Passport
{
...
};
Код: Выделить всё
...
char Gender;
...
Код: Выделить всё
...
void Show( string S );
...
};// окончание объявления структуры
void Passport::Show( string S )
{...}
Код: Выделить всё
#include <iostream>
using namespace std;
// все остается как есть, но данные считываем так:
cout << endl << "Введите следующие данные: имя, фамилию, пол (М/Ж), группу крови, дату рождения";
cin >> passport[i].name >> passport[i].sec_name >> passport[i].pol >> passport[i].gruppa_krovi >> passport[i].date;
// ну или по порядку:
// cout << "Введите следующие данные:"
// cout << endl << "имя: ";
// cin >> passport[i].name;
// cout << endl << "фамилию: ";
// cin >> passport[i].sec_name;
// ну и так далее
Ну это я провокационно заявил, конечно. Но.sadman писал(а):а вот отсюда по-подробнейprintf() и getch() сотоварищи - это зло
Код: Выделить всё
// Консоль:
int i;
float fl;
char temp[100];
std::cin.getline(temp, 100);
fl=strtof(temp,0);
std::cin.getline(temp, 100);
i=strtol(temp,0,10);
// Файл:
std::ifstream someVarName("data.txt");
float fl;
char temp[100];
someVarName.getline(temp, 100);
fl=strtof(temp);
int i;
someVarName >> i;
Код: Выделить всё
#include <iostream>
using namespace std;
class Passport
{
friend ostream& operator<<(ostream& output, const Passport& p);
friend ostream& operator>>(istream& input, Passport& p);
private:
char _name[100],
_surname[100];
int _birthday; // в формате 19802910 для 29.10.1980
char _bloodType[3]; //чтобы включить и резус, то есть максимум "AB+"
};
ostream& operator<<(ostream& output, const Passport& p)
{
output << "Name-surname: " << p._name << p._surname << endl;
output << "Birthday: " << p._birthday << endl;
output << "Blood type: " << p._bloodType << endl << endl;
return output;
}
istream& operator>>(istream& input, Passport& p)
{
// Ввод по порядку: имя, фамилия, дата рождения, группа крови
input >> p._name >> p._surname >> p._birthday >> p._bloodType;
return input;
}
void main()
{
personCount = 10;
Passport data[personCount];
for(int i = 0; i < personCount; i++)
{
cout << "Введите имя, фамилию, дату рождения в формате yyyymmdd, групу крови: "
cin >> data[i];
cout << endl << endl;
}
cout << "Вы ввели следующие данные: " << endl << endl;
for(int i = 0; i < personCount; i++)
{
cout << data[i];
}
}
По идее, этого достаточно, потому что С++ автоматом генерит конструктор, конструктор копирования и деструктор для класса. Но! В данном случае надо сделать, как минимум, конструктор, который будет выделять память для массиово символов (char _name[100], _surname[100]; и т.п.), насколько я помню.[geniuz] писал(а):dmitriid,
это вся прога??? а конструкторы и диструкторы тут есть?