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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2011, 00:02   #1
Kroleg
Пользователь
 
Регистрация: 26.03.2011
Сообщений: 18
По умолчанию Где в программе перегрузка операторов?

Подскажите где в этой программе перегрузка операторов и для чего вообще это нужно?

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <fstream>
#pragma argsused
//---------------------------------------------------------------------------
class Klient
{
public:
char nom_scheta[7];
char familiya[10];
char imya[10];
char ochestvo[15];
float summa;
char data_operacii[11];
char tip_operacii [11];
int vvod_dannih(Klient &data);
};
class Operation: public Klient
{
public: void operacii(Klient client){
cout<<"vvedite daty operacii:";
char dat[11];
cin>>dat;
cout<<"vvedite tip operacii (popolnenie/snyatie):";
char key_type[11];
float sum;
cin>>key_type;
if (strcmp(key_type,"popolnenie")==0)
{
cout<<"Vvedite summu popolneniya sum=";
cin>>sum;
client.summa+=sum;
}
else if (strcmp(key_type,"snyatie")==0)
{
cout<<"Vvedite summu snyatiya sum=";
cin>>sum;
client.summa-=sum;
}
ofstream fout("klients.txt",ios::trunc);
fout.write((char*)&client, sizeof(client));
fout.close();
}
};
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
int Klient::vvod_dannih (Klient &data)
{
cout<<"Vvedite nomer scheta: ";
cin.getline(data.nom_scheta,7);
cin.getline(data.nom_scheta,7);
cout<<"Vvedite familiu: ";
//cin.getline (data.familiya,10);
cin.getline (data.familiya,10);
cout<<"Vvedite imya: ";
cin.getline (data.imya,10);
cout<<"Vvedite ochestvo: ";
cin.getline (data.ochestvo,15);
cout<<"Vvedite daty operacii: ";
cin.getline (data.data_operacii,11);
cout<<"Vvedite tip operacii: ";
cin.getline (data.tip_operacii,11);
cout<<"Vvedite summy: ";
cin>>data.summa;

ofstream fout("klients.txt",ios::app);
fout.write((char*)&data, sizeof(data));
fout.close();
return 1;
}
//---------------------------------------------------------------------------
void vyvod (Klient& data)
{
cout<<"\n"<<data.nom_scheta<<" "
<<data.familiya<<" "
<<data.imya<<" "
<<data.ochestvo<<" "
<<data.data_operacii<<" "
<<data.tip_operacii<<" "
<<data.summa<<"\n " ;
}
//---------------------------------------------------------------------------
void main()
{
char ch;
do
{
cout<<" -------------- MENU -------------\n";
cout<<"| 1.Dobavlenie klienta |\n";
cout<<"| 2.Poisk, operacii, vuvod |\n";
cout<<"| 3.Poisk i udalenie |\n";
cout<<"| 4.Vyhod |\n";
cout<<" ---------------------------------\n";
cout<<"\nVash vubor-->";
cin>>ch;
Klient data;
Operation operation;
switch (ch)
{
//------------------------------------------------------------------------------
case '1':
{
Klient Input;
Input.vvod_dannih (data);
vyvod (data);
break;
}
Kroleg вне форума Ответить с цитированием
Старый 27.12.2011, 00:02   #2
Kroleg
Пользователь
 
Регистрация: 26.03.2011
Сообщений: 18
По умолчанию

Вот продолжение:
case '2':
{
const k=70;
Klient A[k];
int i=0,l=0;
ifstream fin ("klients.txt");
while (!fin.eof())
{
fin.read((char*)&A[i],sizeof(Klient));
i++;
}
fin.close();
char key_nom[10];
cout<<"Dlya poiska po baze vvedite dannye\n";
cout<<"nomer scheta: ";
cin>>key_nom;
l=i;
int point=0,n;
for (i=0;i<l;i++)
{
if (strcmp(key_nom,A[i].nom_scheta)==0)
{
cout<<"\n"<<A[i].nom_scheta<<" "
<<A[i].familiya<<" "
<<A[i].imya<<" "
<<A[i].ochestvo<<" "
<<A[i].data_operacii<<" "
<<A[i].tip_operacii<<" "
<<A[i].summa<<"\n " ;
n=i;
point=1;
}
}
if (point==0)
{
cout<<"\nDannye ne naydeny";
getch();
}
else
{
cout<<"Vy hotite operirovat so schetom? (Y/N) ";
char resh[1];
cin>>resh;
if (strcmp(resh,"y")==0)
{
operation.operacii(A[n]);
}
else cout<<"OK\n\n";
}
clrscr();
}
break;
//------------------------------------------------------------------------------
case '3':
{
const k=70;
Klient A[k];
int i=0,l=0;
ifstream fin ("klients.txt");
while (!fin.eof())
{
fin.read((char*)&A[i],sizeof(Klient));
i++;
}
fin.close();
char key_nom[10];
cout<<"Dlya udaleniya iz bazy vvedite dannye\n";
cout<<"nomer scheta: ";
cin>>key_nom;
l=i;
int point=0,n;
for (i=0;i<l;i++)
if (strcmp(key_nom,A[i].nom_scheta)==0)
{
cout<<"\n"<<A[i].nom_scheta<<" "
<<A[i].familiya<<" "
<<A[i].imya<<" "
<<A[i].ochestvo<<" "
<<A[i].data_operacii<<" "
<<A[i].tip_operacii<<" "
<<A[i].summa<<"\n " ;
n=i;
point=1;
}
if (point==0)
{
cout<<"\nDannye ne naydeny\n\n";
getch();
}
else
{
cout<<"Vy hotite udalit dannyu zapis? (Y/N) :";
char ch1[1];
cin>>ch1;
if (strcmp(ch1,"y")==0)
{
for (i=n;i<l;i++)
A[i]=A[i+1];
ofstream fout("klients.txt",ios::trunc);
fout.write((char*)&A, sizeof(A));
fout.close();
}
}
clrscr();
}
break;
//------------------------------------------------------------------------------
case '4':
{
exit(1);
break;
}
//------------------------------------------------------------------------------
}
}
while (ch!=4);
getch();
}
Kroleg вне форума Ответить с цитированием
Старый 27.12.2011, 00:10   #3
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

Если ты не хочешь, я могу погуглить за тебя. А перегрузки операторов я тут не нашел.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 27.12.2011, 00:11   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в данном коде нет перегрузки операторов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.12.2011, 02:10   #5
Kroleg
Пользователь
 
Регистрация: 26.03.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в данном коде нет перегрузки операторов.
А как её тогда сделать, эту перегрузку операторов?
Kroleg вне форума Ответить с цитированием
Старый 27.12.2011, 02:13   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

так разве << и >> тут не перегружены? понятно, что перегрузил их не автор программы, но, имхо, этого условия и не было в исходном вопросе )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов Jugger Помощь студентам 7 23.11.2011 23:40
Перегрузка операторов Leo_ня Общие вопросы C/C++ 7 10.04.2011 15:52
Перегрузка операторов raspberry Общие вопросы C/C++ 2 06.04.2010 00:19
Перегрузка операторов. Macb3th Общие вопросы C/C++ 5 01.04.2010 21:14
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15