Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2010, 12:46   #1
Purr
Пользователь
 
Аватар для Purr
 
Регистрация: 18.05.2010
Сообщений: 21
Печаль OOП, С++.Создание класса...

...Дружественные функции, объекты и указатели на объекты.

Задание:Библиотека. О каждой годовой подписке выходящих журналов известно: шифр, название, год издания, сколько раз читатели брали каждый из входящих в подписку журналов(статический массив). Указатель типа double.

Конструктор по умолчанию :ру;
Функция ввода-член класса:а;
Внешняя функция ввода:рх;
Конструктор копии(оригинал):в(а);

Проблема в функции main как раз с этими данными. Не могу понять, почему так. Неправильно написала, а как правильно, уже не понимаю. Если сможете, помогите, пожалуйста.

Текст программы:

Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include<iomanip.h>

const int M=2, N=5;

class TLibr

{
int kod;
char naz[M];
int god;
int br[M];
double *p;
public:
	TLibr(int kk=0,char *nn="sss", int gd=0, int b=0, double pp=0);
	TLibr(const TLibr&obj);
	~TLibr ();
	void vvod();
	void vivod();
	friend void f_vvod(TLibr&x);

};

TLibr::TLibr(int kk,char *nn, int gd, int b, double pp)
	{
        strcpy(naz, nn);
	kod=kk;
	god=gd;
	for (int i=0;i<M;i++)
	br[i]=b;
	p=new double;
	*p=pp;
	}


TLibr::TLibr(const TLibr&obj)
{
	strcpy(naz, obj.naz);
	kod=obj.kod;
	god=obj.kod;
	for(int i=0;i<M;i++)
	br[i]=obj.br[i];
	p=new double;
	*p=*obj.p;

}

TLibr::~TLibr() {delete p;}

void TLibr:: vvod ()
	{
	cout<<"Vvedite kod podpiski:"<<endl;
	cin>>kod;
	cout << "Vvedite nazvanie journala:"<< endl;
	  for (int i=0; i<M; i++)
	  {
	   cin>>naz[i];
	   cout << "Vvedite god vipuska:"<< endl;
	   cin>>god;
	   cout<< "Vvedite kol-vo vipiski:"<<endl;
	   cin>>br[i];
	   cout<<endl;
	   cout <<"Vvedite ykazatel" << endl;
	   cin >> *p;
	  }
	}

void TLibr:: vivod()
	{
		cout<<"Kod:"<<kod<<endl;
		cout<< "Nazvanie journala: ";
		for (int i=0; i<M; i++)
			{
			cout<<naz[i]<<endl;
			cout<<"God vipyska: " << god << endl;
			cout<<"Kol-vo vipisivaniya"<<br[i]<< endl;
			cout<<setw(15)<<"Ykazatel"<<endl;
			cout<<setw(15)<<*p<<endl;
			}
			//getch();
	}
void f_vvod (TLibr&x)
	{
	cout<<"Vvedite kod podpiski:"<<endl;
	cin>>x.kod;
	cout << "Vvedite nazvanie journala:";
	   for (int i=0; i<M; i++)
	   {
	    cin>>x.naz[i];
	    cout << "Vvedite god vipuska:"<< endl;
	    cin>>x.god;
	    cout<< "Vvedite kol-vo vipiski:"<<endl;
	    cin>>x.br[i];
	    cout<<endl;
	    cout<<"Vvedite ykazatel"<<endl;
	    cin>>*x.p;
	    }
	}

void main()
{
clrscr();
TLibr a;
TLibr *py, *px;
py=new TLibr;
px=new TLibr;
Tlibr b(*py);
a.vvod();
f_vvod(*px);
Tlibr b=a;
px->vivod();
py->vivod();
a.vivod(); b.vivod();
////massiv ob'ektov
TLibr mas[N];
	for(int i=0;i<N;i++)
	{
	cout<<"mas["<<i<<"].  ";
	mas[i].vivod();
	cout<<endl;
	}
cout << "Press any key" << endl;


getch();
}
— Марвин, ты спас нам жизнь!
— Кошмар, правда?
(с) The Hitchhiker's Guide to the Galaxy

Последний раз редактировалось Purr; 03.10.2010 в 16:24. Причина: цвет не отобразился
Purr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса eksted Общие вопросы Delphi 8 30.06.2010 12:42
создание класса driga Помощь студентам 0 09.04.2010 21:14
Создание класса Dogmat Общие вопросы C/C++ 2 12.01.2009 14:32
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54