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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2013, 22:02   #11
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Перегрузить для Remedy operator<, который будет их как-то сравнивать (по названию, например, это и будет "ключевое поле"); - Вот это немного не поняла
Diana528 вне форума Ответить с цитированием
Старый 25.11.2013, 22:09   #12
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
void PharmV::multiply(PharmV &A, PharmV &B)
{std::set_intersection(vmedicines.begin(), vmedicines.end(), pmedicines.begin());};
void PharmV::differ(PharmV &A, PharmV &B)
{std::set_difference(vmedicines.begin(), vmedicines.end(), std::inserter(pmedicines, pmedicines.begin()));};
верно будет?
Diana528 вне форума Ответить с цитированием
Старый 25.11.2013, 22:12   #13
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А, ну да, тогда третья функция не нужна, конечно.

Во-первых, тебе нужна еще одна база данных, чтобы было что на что умножать )
Во-вторых перечисленные алгоритмы работают с отсортированными множествами, потому перед их вызовом нужно для обоих списков вызвать std::sort.

Последний раз редактировалось Son Of Pain; 25.11.2013 в 22:15.
Son Of Pain вне форума Ответить с цитированием
Старый 25.11.2013, 22:13   #14
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

что то ничего не работает((
Код:
class PharmV: public Pharmacy
{Remedy medicines[max_nmedicines];
std::vector<Remedy> vmedicines;
std::vector <Remedy>::iterator pmedicines;
public:
	//PharmV(const wchar_t *k);
	//Pharmacy(k) {};
	//PharmV(): Pharmacy() {};

	void show();
	void cnslCmd();
	void save_file();
	void read_file();
    void add_medicines(Remedy); 
    void del_last_medicines(); 
	void del_name(const wchar_t *f);
	void clear();
	void mysort();
    void del_dubles();
void find_name( const wchar_t *g);
void multiply(PharmV &A, PharmV &B);
void differ(PharmV &A, PharmV &B);

PharmV operator-(PharmV);
PharmV operator*(PharmV);
};
Код:
void PharmV::multiply(PharmV &A, PharmV &B)
{std::set_intersection(vmedicines.begin(), vmedicines.end(), pmedicines.begin());};
void PharmV::differ(PharmV &A, PharmV &B)
{std::set_difference(vmedicines.begin(), vmedicines.end(), std::inserter(pmedicines, pmedicines.end()));};
Код:
#include "stdafx.h"
#include "Pharma.h"
#define lname 40
#include<iostream>
#include<locale>
#include <iterator>
#include<fstream>
#include <vector>
#include <algorithm>
#include <wchar.h>

using namespace std;

int main()//Главная программа
{wcin.imbue(locale("rus_rus.866"));
	setlocale(LC_ALL, "Russian");

	PharmV A(L"A"); A.read_file(); A.show();
	PharmV B(L"B"); B.read_file(); B.show();
	PharmV C(L"C"); C.read_file(); C.show();
	PharmV D(L"A"); D.read_file(); D.show();

	PharmV R(L"R");  
	R=A*B-C*D;
	R.show();
	R.cnslCmd();

system("pause");
return 0;
     }
Ошибки: Ошибка 7 error C2039: begin: не является членом "std::_Vector_iterator<_Myvec>" d:\мои документы\visual studio 2010\projects\копия lab.11\lab.11\pharma.cpp 555 1 Lab.11
Ошибка 17 error C2664: PharmV::PharmV(const PharmV &): невозможно преобразовать параметр 1 из "const wchar_t [2]" в "const PharmV &" d:\мои документы\visual studio 2010\projects\копия lab.11\lab.11\lab.11.cpp 19 1 Lab.11
Ошибка 13 error C2780: _OutTy *std::set_difference(_InIt1,_InIt1, _InIt2,_InIt2,_OutTy (&)[_OutSize],_Pr): требует аргументов: 6, имеется: 3 d:\мои документы\visual studio 2010\projects\копия lab.11\lab.11\pharma.cpp 557 1 Lab.11

Последний раз редактировалось Diana528; 25.11.2013 в 22:17.
Diana528 вне форума Ответить с цитированием
Старый 25.11.2013, 22:23   #15
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Вот ты пишешь
Код:
void PharmV::multiply(PharmV &A, PharmV &B)
{std::set_intersection(vmedicines.begin(), vmedicines.end(), pmedicines.begin());};
Эта функция должна найти пересечение двух множеств и вернуть куда-то результат. А что делает твой код? Почему не используются переданные в функцию параметры? Пересечение каких двух множеств считается? Куда возвращается результат?
Son Of Pain вне форума Ответить с цитированием
Старый 26.11.2013, 08:45   #16
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

как мне использовать эти параметры &A &B?
Diana528 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Векторная алгебра ACE Valery Помощь студентам 55 13.02.2014 23:18
алгебра на Си lika1129970 Помощь студентам 5 02.06.2013 17:57
Булева алгебра ips-123321 Общие вопросы C/C++ 4 11.09.2011 18:40
Алгебра матриц kok222 Помощь студентам 13 13.05.2010 08:55
Алгебра Zmaxer Помощь студентам 4 12.10.2009 19:04