домашняя работа
Модератор: Злобный
домашняя работа
паспортные данные
поля: имя фамилия группа крови дата рождения пол
методы: ввод вывод операция по перемене пола вычисление возраста
кто может черкните как...
предмет POO
язык Си
поля: имя фамилия группа крови дата рождения пол
методы: ввод вывод операция по перемене пола вычисление возраста
кто может черкните как...
предмет POO
язык Си
- sadman
- Завсегдатай
- Сообщения: 2001
- Зарегистрирован: Чт дек 15, 2005 23:46
- Откуда: с ботаники
- Контактная информация:
ну как, просто.
Создаешь структуру
Внутри структуры создаешь нужные тебе поля, примерно так
Далее методы:
Что-то вроде того.
зы а что такое POO?
Создаешь структуру
Код: Выделить всё
struct Passport
{
...
};
Код: Выделить всё
...
char Gender;
...
Код: Выделить всё
...
void Show( string S );
...
};// окончание объявления структуры
void Passport::Show( string S )
{...}
зы а что такое POO?
sadman,
Объектно ориентированное програмирование
а это покатит?
http://risik.city.tomsk.net/oop/l06.htm
Объектно ориентированное програмирование
а это покатит?
http://risik.city.tomsk.net/oop/l06.htm
- sadman
- Завсегдатай
- Сообщения: 2001
- Зарегистрирован: Чт дек 15, 2005 23:46
- Откуда: с ботаники
- Контактная информация:
[off]ну, если Объектно ориентированное програмирование, то оно чаще сокращается как OOP (Object Oriented Programming)[/off]
Ну, ты говорил о языке С, а там С++. Там создаются классы, производится инкапсуляция. Я думаю вы этого еще не проходили
Тем более что у тебя в задании просят методы и поля, то-есть члены структуры(одной) или класса(одного).
И, как я понял из задания, там нужна только одна структура/класс.
зы но идею с перечислимым типом Sex мона позаимствовать
Ну, ты говорил о языке С, а там С++. Там создаются классы, производится инкапсуляция. Я думаю вы этого еще не проходили
Тем более что у тебя в задании просят методы и поля, то-есть члены структуры(одной) или класса(одного).
И, как я понял из задания, там нужна только одна структура/класс.
зы но идею с перечислимым типом Sex мона позаимствовать
# include <stdio.h>
# include <conio.h>
main()
{
struct Passport
{
char name[10];
char sec name[20];
char pol[2];
int gruppa krovi[2];
int int date (int yy, int mm, int dd)
} Passport
clrscr();
//----------------------------------------------------------Zapolnenie strukturi-----------
for(i=0;i<KOL;i++)
{
printf("\n Vvedite name (ne bolee 10 simvolov!!!):");
for(;;)
{
for(j=0;j<sizeof(passport.name)-1;j++)
{
per=getch();
if(per==13)
break;
if((per>='A' && per<='Z') || (per>='a' && per<='z'))
{
passport.name[j]=per;
putch(per);
}
else
{
j--;
continue;
}
}
passportt.name[j]=0;
if(passport.name[0]==0)
continue;
if(per==13)
break;
else
for(;(per=getch())!=13;)
break;
}
так?
# include <conio.h>
main()
{
struct Passport
{
char name[10];
char sec name[20];
char pol[2];
int gruppa krovi[2];
int int date (int yy, int mm, int dd)
} Passport
clrscr();
//----------------------------------------------------------Zapolnenie strukturi-----------
for(i=0;i<KOL;i++)
{
printf("\n Vvedite name (ne bolee 10 simvolov!!!):");
for(;;)
{
for(j=0;j<sizeof(passport.name)-1;j++)
{
per=getch();
if(per==13)
break;
if((per>='A' && per<='Z') || (per>='a' && per<='z'))
{
passport.name[j]=per;
putch(per);
}
else
{
j--;
continue;
}
}
passportt.name[j]=0;
if(passport.name[0]==0)
continue;
if(per==13)
break;
else
for(;(per=getch())!=13;)
break;
}
так?
во-первых, что такое passport, и где он задается?
во-вторых, вы <iostream> проходили?
Эхх. Давно я на С++ не писал. Сейчас пишу по памяти. Должно сработать так:
И еще. Наименования переменных надо писать или только на английском или только на русском. Потому что этот код кто-то да будет читать, а там тааакая мешанина...
во-вторых, вы <iostream> проходили?
Эхх. Давно я на С++ не писал. Сейчас пишу по памяти. Должно сработать так:
Код: Выделить всё
#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() сотоварищи - это зло
(Все примеры не тестировались. С++ я в руки давно не брал, могут быть ошибки)
printf() и getch() - это наследие С. В С++ удобнее работать с потоками и (в простейших вариантах) с cin и cout. Например, с консолью и с файлами можно работать одинаково:
Код: Выделить всё
// Консоль:
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,
это вся прога??? а конструкторы и диструкторы тут есть?
А в остальном - да, это вся программа. Но, повторюсь, я дааавно с С++ не игрался Мог чего-нибудь напутать
-
- Юзер
- Сообщения: 60
- Зарегистрирован: Вт ноя 16, 2004 10:13
- Откуда: Deutschland
- Контактная информация:
-
- Юзер
- Сообщения: 60
- Зарегистрирован: Вт ноя 16, 2004 10:13
- Откуда: Deutschland
- Контактная информация: