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!!!
|
|
|
Записан
|
|
|
|
|