| 
			| 
					
						| ZaVyLoN 
								Интересующийся    Offline | 
								|  | «  : 17-04-2010 09:46 »  |  | 
 
 Помогите, пожалуйста, перегрузить += (нужно сложить все money) И правильно ли я перегрузил >>, <<, [] !? #include <iostream>#include <locale>
 #include <ctime>
 
 using namespace std;
 
 struct Fin
 {
 int day;
 double money;
 };
 class Buh
 {
 Fin *pFin;
 int sz;
 public:
 
 Buh(int size = 0)
 {
 srand(time(0));
 sz = size = 31;
 
 pFin = new Fin[sz];
 for(int i = 0; i < sz; i++)
 {
 //pFin[i].money = (rand()/100)/10.0;
 pFin[i].day = i + 1;
 }
 }
 //Перегрузка []-----------------------------------------------------------
 Fin& operator[] (int i)
 {
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 return pFin[i];
 }
 //--------
 void add();
 void show();
 friend istream& operator>> (istream& is, Buh& a);
 friend ostream& operator<< (ostream& os, Buh& a);
 
 };
 //Перегрузка оператора вв -------------------------------------------------
 istream& operator>> (istream& is, Buh& d)
 {
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 for(int j = 0; j < d.sz; j++)
 {
 is>>d.pFin[j].money;
 }
 return is;
 }
 //Перегрузка оператора выв ------------------------------------------------
 
 ostream& operator<< (ostream& os, Buh& a)
 {
 
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 for(int i = 0; i < a.sz; i++)
 {
 os<<a.pFin[i].day<<" "<<a.pFin[i].money<<endl;
 }
 return os;
 }
 //------------------------------------------------------------------
 
 
 //------------------------------------------------------------------
 void Buh::add()
 {
 for(int i = 0; i < sz; i++)
 {
 cin>>pFin[i].money;
 }
 
 }
 
 void Buh::show()
 {
 for(int i = 0; i < sz; i++)
 {
 cout<<"В "<<pFin[i].day<<"-й день "<<pFin[i].money<<"$"<<endl;
 }
 }
 
 int main()
 {
 setlocale(0, "rus");
 
 Buh h;
 char c;
 
 do
 {
 system("cls");
 cout<<"Выберите пожалуйста действие:\n\t1 - Ввод данных;\n\t2 - Просмотреть учет;\n\t3 - Доход;\n\te - Exit;"<<endl;
 cin>>c;
 switch(c)
 {
 case '1':
 system("cls");
 cout<<"Введите пожалуйста money:\n";
 h.add();
 system("cls");
 break;
 
 case '2':
 system("cls");
 cout<<"Данные вашей бухгалтерии за целый месяц:\n";
 h.show();
 system("PAUSE");
 break;
 
 case '3':
 system("cls");
 cout<<"Sum = :\n";
 // sum =  :confused:
 system("PAUSE");
 }
 }while(c != 'e');
 
 
 
 
 return 0;
 }
 |  
						| 
								|  |  
								| « Последнее редактирование: 19-04-2010 07:18 от ZaVyLoN » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #1 : 18-04-2010 05:48 »  |  | 
 
 что должен делать оператор "!" ? оператор "+=" - для какого класса то ? ) а с [] я хотя бы так сделал бы 	Fin& operator[] (int i){
 static Fin_null;
 if(!pFin || i>=sz)return Fin_null;//уже безопаснее
 return pFin[i];
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| ZaVyLoN 
								Интересующийся    Offline | 
								|  | « Ответ #2 : 18-04-2010 18:56 »  |  | 
 
 Спасибо за []С остальным сам разобрался. )
 |  
						| 
								|  |  
								| « Последнее редактирование: 19-04-2010 03:52 от Sel » |  Записан | 
 |  |  | 
	| 
			| 
					
						| ZaVyLoN 
								Интересующийся    Offline | 
								|  | « Ответ #3 : 18-04-2010 22:38 »  |  | 
 
 Народ, по-моему, я неправильно перегрузил опрераторы вв/выв
 Помогите мне!
 |  
						| 
								|  |  
								| « Последнее редактирование: 19-04-2010 03:51 от Sel » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 19-04-2010 02:51 »  |  | 
 
 ZaVyLoN, чтобы ответить на этот вопрос, сначала нужно узнать, что ДОЛЖНЫ эти операторы у тебя делать ?  |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Антон (LogRus) | 
								|  | « Ответ #5 : 19-04-2010 04:59 »  |  | 
 
 Алексей1153++, не надо безопасней, ни кто не говорил, что оператор должен контролировать границы и не известно, что выберет разработчик, безопасность или скоростьвектор например, для этих целей (контроль границ) использует метод at
 
 кроме, того то что ты написал, это на самом деле сокрытие проблемы в коде, лучше уж бросать исключение
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Странно всё это.... |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #6 : 19-04-2010 05:10 »  |  | 
 
 LogRus, это уже он сам пусть додумывает, я только указал, где будет поломка ) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #8 : 19-04-2010 07:11 »  |  | 
 
 ZaVyLoN, скажи, работает, как надо ? Если да - то правильно ) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| ZaVyLoN 
								Интересующийся    Offline | 
								|  | « Ответ #9 :  19-04-2010 07:19 »   |  | 
 
 если всатвить стороку сout<<"fvfsvdv"<<endl;
 
 вместо строки в коде
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 оно же должно по идее вывести "fvfsvdv",но не выводит!!!
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Dr.Yevhenius | 
								|  | « Ответ #10 : 19-04-2010 10:29 »  |  | 
 
 1) "fvfsvdv" - это не обьект класса Buh и, соответственно, это не проблема с его (класса) перегруженными методами.2) Может что-то выводит: ошибку, предупреждение или еще чего интересного?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| ZaVyLoN 
								Интересующийся    Offline | 
								|  | « Ответ #11 : 20-04-2010 09:05 »  |  | 
 
 я разобрался  в своих ошибках,в main вв и выв сделал правильно cin>>h;, cout<<h, ну и все остальное!!
 
 У меня есть Еще вопрос, на другую тему, решил не забивать форум новыми темами спрошу сдесь
 
 как написать цифровые часы!? (h:m:s)
 и заменть циферки нужно на свои
 например:
 ****
 *    *
 ****
 *    *
 ****
 помогите плз, как бы еще не доконца сам разобрался
 
 я так понимаю нету такой функции чтобы выводила текущеее время и и часы чтобы ишли!
 знаю тока что можно получить текущее время, а там дальше например используя sleep(1000) заставить их идти!!
 наверное способ не очень!!, пока ничего др не придумал
 HELP ME!!!
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |