домашняя работа

Модератор: Злобный

Ответить
Аватара пользователя
[geniuz]
Завсегдатай
Сообщения: 2736
Зарегистрирован: Сб авг 26, 2006 10:41

домашняя работа

Сообщение [geniuz] »

паспортные данные

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

кто может черкните как... :)
предмет POO
язык Си
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

ну как, просто.
Создаешь структуру

Код: Выделить всё

struct Passport
{
...
};
Внутри структуры создаешь нужные тебе поля, примерно так

Код: Выделить всё

...
char Gender;
...
Далее методы:

Код: Выделить всё

...
void Show( string S );
...
};// окончание объявления структуры

void Passport::Show( string S )
{...}
Что-то вроде того.
зы а что такое POO?
Аватара пользователя
[geniuz]
Завсегдатай
Сообщения: 2736
Зарегистрирован: Сб авг 26, 2006 10:41

Сообщение [geniuz] »

sadman,

Объектно ориентированное програмирование

а это покатит?

http://risik.city.tomsk.net/oop/l06.htm
Аватара пользователя
webstudio
Юзер
Сообщения: 147
Зарегистрирован: Пт дек 16, 2005 12:19
Откуда: Moldova
Контактная информация:

Сообщение webstudio »

Адрест лабораторной по Ораклу у кого-то есть?
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

[off]ну, если Объектно ориентированное програмирование, то оно чаще сокращается как OOP (Object Oriented Programming)[/off]
Ну, ты говорил о языке С, а там С++. Там создаются классы, производится инкапсуляция. Я думаю вы этого еще не проходили ;)
Тем более что у тебя в задании просят методы и поля, то-есть члены структуры(одной) или класса(одного).
И, как я понял из задания, там нужна только одна структура/класс.
зы но идею с перечислимым типом Sex мона позаимствовать ;)
Realist
Юзер
Сообщения: 218
Зарегистрирован: Вс июн 06, 2004 15:30

Сообщение Realist »

Правельно, пол не должен быть булевым, а то есть люди с нарушеной гинетикой и не М, и не Ж. Главное, что человек всегда может решить сменить его.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

Realist писал(а):Правельно, пол не должен быть булевым, а то есть люди с нарушеной гинетикой и не М, и не Ж. Главное, что человек всегда может решить сменить его.
<a href=https://bugaga.ru target=_blank>лол</a> ))
Аватара пользователя
[geniuz]
Завсегдатай
Сообщения: 2736
Зарегистрирован: Сб авг 26, 2006 10:41

Сообщение [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;
}

так?
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение 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;
// ну и так далее
И еще. Наименования переменных надо писать или только на английском или только на русском. Потому что этот код кто-то да будет читать, а там тааакая мешанина...
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

dmitriid,
а нафига ему твои cout'Ы? :? раз пишет в стдио - знаит так надо, так задали!
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение dmitriid »

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

printf() и getch() сотоварищи - это зло, однозначно :)
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

printf() и getch() сотоварищи - это зло
а вот отсюда по-подробней
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение 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...) конечно. Работа с динамически типизированными языками расслабляет однако
Аватара пользователя
[geniuz]
Завсегдатай
Сообщения: 2736
Зарегистрирован: Сб авг 26, 2006 10:41

Сообщение [geniuz] »

dmitriid,
это вся прога??? а конструкторы и диструкторы тут есть?
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение dmitriid »

[geniuz] писал(а):dmitriid,
это вся прога??? а конструкторы и диструкторы тут есть?
По идее, этого достаточно, потому что С++ автоматом генерит конструктор, конструктор копирования и деструктор для класса. Но! В данном случае надо сделать, как минимум, конструктор, который будет выделять память для массиово символов (char _name[100], _surname[100]; и т.п.), насколько я помню.

А в остальном - да, это вся программа. Но, повторюсь, я дааавно с С++ не игрался :) Мог чего-нибудь напутать :shy:
Lichii Anatoli
Юзер
Сообщения: 60
Зарегистрирован: Вт ноя 16, 2004 10:13
Откуда: Deutschland
Контактная информация:

Сообщение Lichii Anatoli »

мля. вот пипец. каждому конструктору по деструктору! :D

мы начинали с знакомится с основами OOP в Java. по-моему это проще!
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение dmitriid »

Lichii Anatoli писал(а):мля. вот пипец. каждому конструктору по деструктору! :D
:lol:
мы начинали с знакомится с основами OOP в Java. по-моему это проще!
Кстати, да. С++ слишком многопарадигменный язык, да в нем еще и ногу сломать можно. ООП лучше начинать учить с Java/C#
Lichii Anatoli
Юзер
Сообщения: 60
Зарегистрирован: Вт ноя 16, 2004 10:13
Откуда: Deutschland
Контактная информация:

Сообщение Lichii Anatoli »

dmitriid писал(а):
Кстати, да. С++ слишком многопарадигменный язык, да в нем еще и ногу сломать можно. ООП лучше начинать учить с Java/C#
читал как-то man mplayer-а. так его создатель очень не хорошо отзывался о C++. :)
Аватара пользователя
dmitriid
Новичок
Сообщения: 28
Зарегистрирован: Пн ноя 06, 2006 17:16
Контактная информация:

Сообщение dmitriid »

Lichii Anatoli писал(а):
читал как-то man mplayer-а. так его создатель очень не хорошо отзывался о C++. :)
Для того, чтобы писать на С++, не ломая ноги-руки-голову, надо ооочень долго с ним возиться :)
Ответить

Вернуться в «Программирование»