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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 21:52   #11
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

вообщем код выглядит так
Код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
#define N 10
#define M 4
class hospital
{
private:
	std::string Name_Doctor;
	std::string Qualification;
	std::string Patient_Name[N];
	short Date[3];
	short Cabinet;
	short Time[2];
public:
	friend class vector;
	hospital();
	friend std::ostream & operator << (std::ostream &ost, hospital &h);
    //bool operator += (void);
	void split (char*);
};
hospital::hospital()
{
	Cabinet = 0;
	Date[0] = Date[1] = Date[3] = 0;
	Time[0] = Time[1];
}
std::ostream & operator << (std::ostream &ost, hospital &h)
{
	setlocale(LC_ALL, "rus");
		ost << "Имя Врача: " << h.Name_Doctor << "Квалификация: " << h.Qualification << "Кабинет: "
		<< h.Cabinet << "Дата: " << h.Date[0] << "." << h.Date[1] << "." << h.Date[2];
	return ost;
}
void hospital::split(char *base)
{
	char* p, *p1 = NULL;
	int i = 0;
	p = strtok_s(base, " ", &p1);
	Name_Doctor = std::string((const char*)p);
	p = strtok_s(NULL, " ", &p1);
	Qualification = std::string((const char*)p);
	p = strtok_s(NULL, " ", &p1);
	Cabinet = atoi((const char *)p);
	for (; i < 3; ++i) {
		p = strtok_s(NULL, ". ", &p1);
		Date[i] = atoi((const char *)p);
	}
}
class vector
{
private:
	hospital Base[M];
public:
	friend std::ostream & operator << (std::ostream &ost, vector &v);
	void split(hospital &h, char *);
};
void vector::split(hospital &h ,char * base)
{
	for (int i = 0; i < M; i++)
		h.split(base);

}
std::ostream & operator << (std::ostream &ost, vector &v)
{
	for (int i = 0; i < M; i++)
		ost << v.Base[i] << std::endl;;
	return ost;
}
int main()
{
	vector Date[M];
	int i = 0;
	char base[255];
	using namespace std;
	setlocale(LC_ALL, "rus");
	ifstream Date_Base;
	Date_Base.open("Date_Base.txt");
	if (!Date_Base) { cout << "Error" << endl; exit; }
	while (Date_Base.eof() && Date_Base.fail() && i < M) 
	{
		Date_Base.getline(base, 255);
		//Date[i].split(,base);
	i++;
	}
	cout << Date[i];
	cin.get();
	cin.get();
}
мне нужно через дружеский класс вектор,занести значения в основной,с помощью методов основного класса.
про наследование знаю,но его как бы тут еще нельзя использовать.
я считываю из файла данные,и думал вызвать метод класса для того что бы разбить.
можно же просто добавить этот метод во второй класс и забить значения в основной, да?

Последний раз редактировалось Sterben; 28.09.2015 в 22:18.
Sterben вне форума Ответить с цитированием
Старый 28.09.2015, 22:25   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то не нравится мне твоя реализация... Я не знаю какова задача, потому скажу только одно: Тебе стоит сделать примерно так:
Код:
void hospital::split(string s)
{
   int i=0,k=i;
   string item;
   for(i=s.find(" ",i);i!=string::npos;i=s.find(" ",i+1)) {
     item=s.substr(k,i-k); k=i;
     Что-то делаем с item - в него помещено очередное слово из s
   }
 
}
А вообще я бы на твоем месте свой класс назвал не vector, а по другому, а в качестве массива слов применил бы его: http://www.cplusplus.com/reference/v...tor/?kw=vector

P.S. Все. Я баиньки. Завтра чуть свет и на работу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2015, 22:27   #13
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то не нравится мне твоя реализация... Я не знаю какова задача, потому скажу только одно: Тебе стоит сделать примерно так:
Код:
void hospital::split(string s)
{
   int i=0,k=i;
   string item;
   for(i=s.find(" ",i);i!=string::npos;i=s.find(" ",i+1)) {
     item=s.substr(k,i-k); k=i;
     Что-то делаем с item - в него помещено очередное слово из s
   }
 
}
А вообще я бы на твоем месте свой класс назвал не vector, а по другому, а в качестве массива слов применил бы его: http://www.cplusplus.com/reference/v...tor/?kw=vector

P.S. Все. Я баиньки. Завтра чуть свет и на работу.
Спасибо за ответ(помощь, так правильнее)
Sterben вне форума Ответить с цитированием
Старый 29.09.2015, 09:01   #14
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
P.S. Все. Я баиньки. Завтра чуть свет и на работу.
Ученье свет, а неученье - чуть свет и на работу
Croessmah вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать функцию.. Аделинкка Общие вопросы Delphi 10 21.12.2012 10:47
Як вызвать функцию из dll в C# ? Dr.Pauliss Помощь студентам 5 26.09.2011 12:42
Не могу вызвать функцию (( NewKoder Общие вопросы C/C++ 4 11.12.2009 17:26
Вызвать функцию ассемблера из С++ Dima88 Помощь студентам 3 11.12.2009 00:54
Как вызвать функцию? blackstersl Общие вопросы Delphi 10 07.06.2009 19:22