Наследственост в С++

състезания, състезатели, писатели ...

Модератор: dinkeza

Наследственост в С++

Мнениеот eli7ooooo » Пет Мар 28, 2008 1:48 pm

Задачата е следната :
Група делегати на национална конференция(име,ЕГН,населено място,пътни разходи) са настанени в няколко хотела (име на хптела,номер на стаята,цена на нощувката).Всеки делегат получава делегатска картас вписани: делегатски номер(6 знака), брои полагащи нощувки, дата на пристигане и дата на отпътуване.Данните за делегатите са съхранени в масив.
Да се състави програма, която изпълнява от меню следните операции:
-добавя към масива данните на нов делегат, делегатската му картаи хотела, в който е настанен;
-Извежда всички въведени данни;
-Извежда сумарните пътни разходи за делегатите от посочено населено място;
-Извежда сумата, която трябва да се плати за нощувките на делегатите, настанени в посочен хотел;
-създава нов масив с имената и разходите за хотел на делегатите, родени през посочената година.

:( :shock: :?

В главата ми е пълна каша! По принцип до сега сам се спражяла с задачите си но това с наследствеността не мога да го разбера . Не искам да ми се решава цялата задача а само ако може да ме насочи в нацалото как се въвеждат тея работи с класовете а пак аз ще си направя дръгото мерси много предварително .
eli7ooooo
първолак
 
Мнения: 2
Регистриран на: Пет Мар 28, 2008 1:43 pm

Мнениеот Mike » Пет Мар 28, 2008 7:15 pm

Ето накратко какво представлява наследяването:

Нека вземем някакъв клас
Код: Избери целия код
class person
{
     protected:
        char name[30];
        char EGN[10];
     public:
     person();
     char* getName();
     char* getEGN();
}

Надявам се е ясен този клас ... функциите му ще оставя само като прототипи.

Ако решим да го разширим (примерно човек става работник) използваме наследяването:


Код: Избери целия код
class worker : public person
{
       private:
           int salary;
           char job[30];
       public:
          worker();
          void setSalary();
          void changeJob();
}


Именно с реда class worker : public person казваме че worker наследява публичните членове на person. (членовете protected също се наследяват). Така все едно имаме един по разширен клас само че си спестяваме писането на едни и същи неща ->
Код: Избери целия код
class worker
{
       private:
           char name[30];
           int EGN[10];
           int salary;
           char job[30];
       public:
          worker();
          void setSalary();
          void changeJob();
          char* getName();
          char* getEGN();
.....

Наследяването наследява всички публични и протектед членове както и самите функции върху тях ...
Мисля че не е кой знае колко трудно да се разбере ... позачети се из гугъл ( C++ inheritance ) има доста изписано по темата ...
[/code]
Аватар
Mike
Зависим
 
Мнения: 259
Регистриран на: Нед Ное 13, 2005 11:36 am
Местоположение: the city of shining light

Мнениеот eli7ooooo » Пет Мар 28, 2008 7:26 pm

:shock: :shock:

уфф :? :(

написах някой друг ред но незнам вече ме боли главата не мога да я довърша и ако някои има идеи да казва ето какво написах:

Код: Избери целия код

#include <iostream.h>
#include <stdlib.h>
#include <string.h>   

class clasDat
{
  public:
    int D,M,G;     
    void readDat();
    void writeDat();
};

void clasDat::readDat()
{
cout<<"- Den: ";   cin>>D;
cout<<"- Mesec: "; cin>>M;
cout<<"- Godina: ";cin>>G;
}
void clasDat::writeDat()
{
  cout<<D<<'.'<<M<<'.'<<G<<endl;
}
int datcmp(clasDat D1,clasDat D2)
{
  if (D1.G!=D2.G) return D1.G-D2.G;
  if (D1.M!=D2.M) return D1.M-D2.M;
  return D1.D-D2.D;
}

class Delegati {
protected:
  char Ime[21],EGN[11],Grad[21];
  float p_razhodi;
public:
  void getDataD();
  void displayD();
};
void Delegati::getDataD()
{
cout<<"Imeto na delegata e : "; cin.getline(Ime,20);
cout<<"Naselenoto mqsto e : "; cin.getline(Grad,20);
cout<<"EGN: "; cin.getline(EGN,20);
cout<<"Pytnite razhodi sa: "; cin>>p_razhodi;
}
void Delegati::displayD()
{
cout<<"Ime: "<<Ime<<endl;
cout<<"Naseleno mqsto: "<<Grad<<endl;
cout<<"EGN: "<<EGN<<endl;
cout<<"Pytni razhdi: "<<p_razhodi<<endl;
}

class Hotel {
protected:
   char ImeHotel[21];
   int nom_staq;
   float cena_nosht;
public:
void getDataH();
  void displayH();
};
void Hotel::getDataH()
{
cout<<"Imeto na hotela e : "; cin.getline(ImeHotel,20);
cout<<"Nomera na staqta e: "; cin>>nom_staq;
cout<<"Cena za edna nosht e: "; cin>>cena_nosht;
}
void Hotel::displayH()
{
cout<<"Ime na hotela: "<<ImeHotel<<endl;
cout<<"Nomer na staq: "<<nom_staq<<endl;
cout<<"cena za edna nosht: "<<cena_nosht<<endl;
}
class Deleg_Karta:
public Delegati, public Hotel{
private:
  char DelNom[6];
  int br_nosht;
  clasDat data_otp,data_prist;
public:
  void getData();
  void display();
};
void Deleg_Karta::getData()
{
  cout<<"Delegatski nomer";      cin>>DelNom;
  cout<<"Broi noshtyvki: "; cin>>br_nosht;
  cout<<"Data na pristigane: "; data_prist.writeDat;
  cout<<"Data na tpytuvane: :; data_otp.writeDat;};
void Deleg_Karta::display()
{
       cout<<"delegatski nomer<<DelNom<<endl;
      cout<<"broi noshtvki<<br_nosht<<endl;
      cout<<"data na pristigane<<data_prist.readDat<<endl;
      cout<<"data na otpytuvane<<data_tp.readDat<<endl;
}
void main()
{
system("chcp 1251");
char KodOp; int i,BrDel=0;
do {
  cout<<"\n Menu:\n";
  cout<<"\t  1 - dobavqne na danni za nov delegat\n";
  cout<<"\t  2 - izvejdane vsichki vyvedeni danni\n";
  cout<<"\t  3 - symata na pytnite razhodi na\n";
  cout<<"\t      delegatite ot posocheno naseleno mqsto\n";
  cout<<"\t  4 - symata, koqto trqbva da se zaplatiza noshtyvkite\n";
  cout<<"\t      na delegatite, nastaneni v posochen hotel\n";
  cout<<"\t  5 - syzdava nov masiv s imenata i razhodite za htel na delegatite\n";
  cout<<"\t      rodeni prez posochena godina\n";
  cout<<"\t izberete operaciq ili '0' za krai: ";cin>>KodOp;
  switch (KodOp) {
  case'0':break;
  case'1':
  case'2':
  case'3':
  case'4':
  case'5':
default:cout<<"Грешен код. Натиснете ENTER.\n";
  }
} while (KodOp!='0');
}



:shock: :shock: :shock: :shock:
мерси ако някои ми помогне :)
eli7ooooo
първолак
 
Мнения: 2
Регистриран на: Пет Мар 28, 2008 1:43 pm

Мнениеот dinkeza » Вто Апр 01, 2008 5:30 pm

zna4i vij sega.. definirai si vsi4ko na novo v glavata shtoto tova deto si napisala ,,, nishto ne mu se razbira na logikata.... osven tova tabulaciite sa ti leko zle toest.. vkarvai malko po-navytre koda .... i taka....
dinkeza
търтей форумджия
 
Мнения: 433
Регистриран на: Пон Ное 07, 2005 11:06 pm
Местоположение: v kenefa

Test, just a test

Мнениеот franckyi » Съб Яну 29, 2011 12:49 pm

Hello. And Bye.
Аватар
franckyi
първолак
 
Мнения: 1
Регистриран на: Съб Яну 29, 2011 12:49 pm
Местоположение: US


Назад към Програмиране /C,C++/

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта

cron