Страница 1 из 1
домашняя работа
Добавлено: Пн окт 30, 2006 19:05
[geniuz]
паспортные данные
поля: имя фамилия группа крови дата рождения пол
методы: ввод вывод операция по перемене пола вычисление возраста
кто может черкните как...
предмет POO
язык Си
Добавлено: Пн окт 30, 2006 19:48
sadman
ну как, просто.
Создаешь структуру
Внутри структуры создаешь нужные тебе поля, примерно так
Далее методы:
Код: Выделить всё
...
void Show( string S );
...
};// окончание объявления структуры
void Passport::Show( string S )
{...}
Что-то вроде того.
зы а что такое POO?
Добавлено: Пн окт 30, 2006 19:54
[geniuz]
sadman,
Объектно ориентированное програмирование
а это покатит?
http://risik.city.tomsk.net/oop/l06.htm
Добавлено: Пн окт 30, 2006 19:56
webstudio
Адрест лабораторной по Ораклу у кого-то есть?
Добавлено: Пн окт 30, 2006 20:06
sadman
[off]ну, если Объектно ориентированное програмирование, то оно чаще сокращается как OOP (Object Oriented Programming)[/off]
Ну, ты говорил о языке С, а там С++. Там создаются классы, производится инкапсуляция. Я думаю вы этого еще не проходили
Тем более что у тебя в задании просят
методы и
поля, то-есть члены структуры(одной) или класса(одного).
И, как я понял из задания, там нужна только одна структура/класс.
зы но идею с перечислимым типом Sex мона позаимствовать

Добавлено: Ср ноя 01, 2006 09:51
Realist
Правельно, пол не должен быть булевым, а то есть люди с нарушеной гинетикой и не М, и не Ж. Главное, что человек всегда может решить сменить его.
Добавлено: Ср ноя 01, 2006 11:14
vivk
Realist писал(а):Правельно, пол не должен быть булевым, а то есть люди с нарушеной гинетикой и не М, и не Ж. Главное, что человек всегда может решить сменить его.
<a href=https://bugaga.ru target=_blank>лол</a> ))
Добавлено: Чт ноя 16, 2006 11:03
[geniuz]
# 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;
}
так?
Добавлено: Пт ноя 17, 2006 11:24
dmitriid
во-первых, что такое passport
, и где он задается?
во-вторых, вы <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;
// ну и так далее
И еще. Наименования переменных надо писать или только на английском или только на русском. Потому что этот код кто-то да будет читать, а там тааакая мешанина...
Добавлено: Пт ноя 17, 2006 16:52
sadman
dmitriid,
а нафига ему твои cout'Ы?

раз пишет в стдио - знаит так надо, так задали!
Добавлено: Пт ноя 17, 2006 17:15
dmitriid
sadman писал(а):dmitriid,
а нафига ему твои cout'Ы?

раз пишет в стдио - знаит так надо, так задали!
Не обязательно
printf() и getch() сотоварищи - это зло, однозначно

Добавлено: Пт ноя 17, 2006 18:43
sadman
printf() и getch() сотоварищи - это зло
а вот отсюда по-подробней
Добавлено: Сб ноя 18, 2006 10:51
dmitriid
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];
}
}
// исправлено минуту спустя. for(
int i...) конечно. Работа с динамически типизированными языками расслабляет однако
Добавлено: Ср ноя 29, 2006 10:19
[geniuz]
dmitriid,
это вся прога??? а конструкторы и диструкторы тут есть?
Добавлено: Ср ноя 29, 2006 10:55
dmitriid
[geniuz] писал(а):dmitriid,
это вся прога??? а конструкторы и диструкторы тут есть?
По идее, этого достаточно, потому что С++ автоматом генерит конструктор, конструктор копирования и деструктор для класса. Но! В данном случае надо сделать, как минимум, конструктор, который будет выделять память для массиово символов (char _name[100], _surname[100]; и т.п.), насколько я помню.
А в остальном - да, это вся программа. Но, повторюсь, я дааавно с С++ не игрался

Мог чего-нибудь напутать

Добавлено: Вт дек 05, 2006 12:50
Lichii Anatoli
мля. вот пипец. каждому конструктору по деструктору!
мы начинали с знакомится с основами OOP в Java. по-моему это проще!
Добавлено: Вт дек 05, 2006 12:55
dmitriid
Lichii Anatoli писал(а):мля. вот пипец. каждому конструктору по деструктору!
мы начинали с знакомится с основами OOP в Java. по-моему это проще!
Кстати, да. С++ слишком многопарадигменный язык, да в нем еще и ногу сломать можно. ООП лучше начинать учить с Java/C#
Добавлено: Вт дек 05, 2006 13:21
Lichii Anatoli
dmitriid писал(а):
Кстати, да. С++ слишком многопарадигменный язык, да в нем еще и ногу сломать можно. ООП лучше начинать учить с Java/C#
читал как-то man mplayer-а. так его создатель очень не хорошо отзывался о C++.

Добавлено: Вт дек 05, 2006 13:47
dmitriid
Lichii Anatoli писал(а):
читал как-то man mplayer-а. так его создатель очень не хорошо отзывался о C++.

Для того, чтобы писать на С++, не ломая ноги-руки-голову, надо ооочень долго с ним возиться
