FAQ | Points | Add... | Recent posts | Search | Register | Log in


Prosty programik c++ - sprawdzil by mi ktos...?


Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Prosty programik c++ - sprawdzil by mi ktos...?
Author
Message
Pfikusny
Poziom 17
Poziom 17


Joined: 09 Sep 2003
Posts: 391

Post#1 Post from the author of the topic 06 Dec 2005 14:31   

Prosty programik c++ - sprawdzil by mi ktos...?


W ramach zajec z programowania mam zawsze do napisania jakis prosty przykladowy programik...
Sek w tym, ze najczesciej ucze sie w trakcie pisania tego programu wiec obawiam sie, ze w kodzie moglem popelnic jakies bledy - a jest on sprawdzany i oceniany... zalezaloby mi na tym by bylo w nim jak najmniej bledow zebym dostal troszke punkotow....
Jesli ktos bylby tak dobry i rzucil okiem...

Code:

// labPK4.cpp : Defines the entry point for the console application.
//

/////////////////////////////////////////////////////////////////////
/* Zadanie 4 ////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
Temat zadania:
Zaimplementowac strukture klas (wymagane jest dziedziczenie)
dla systemu ewidencji uczniow i pracownikow szkoly podstawowej.

Informacje przechowywane o uczniach:
- imie i nazwisko
- klasa
- srednia ocen

Informacje przechowywane o nauczycielach:
- imie i nazwisko
- staz
- PESEL

Dla kazdej zaproponowanej klasy prosze zaimplementowac nastepujace funkcje:
- konstruktos domyslny
- konstruktor kopiujacy
- konstruktos z parametrami
- metode wypisujaca wszystkie dane
- operator >> i <<

ROZWIAZANIE:
Stworzone zostaly 3 klasy.
1. Bazowa - osoba - po ktorej beda dziedziczone "imie i nazwisko"
2. Pochodna od osoba - uczen
3. Pochodna od osoba - nauczyciel

*/
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//#include "stdafx.h"
#include <iostream.h>

//klasa osoba, po ktorej kolejne klasy beda dziedziczyc
class osoba
{
    public:
    char* imie;//[20]; // imie max dlugosci 19 znakow
    char* nazwisko;//[30]; // nazwisko max dlugosci 29 znakow

    // konstruktor domyslny
    osoba()
    {
        imie = new char[20];
        nazwisko = new char[30];
        cout<<"Stworzono osobe\n";
    }
   //destruktor
   ~osoba()
   {
      delete[] imie;
      delete[] nazwisko;
   }

    //konstruktor kopiujacy
    osoba(const osoba &c):
    imie(c.imie), nazwisko(c.nazwisko)
    {
        cout << "Konstruktor klonowania" << endl;
    }
   
   //konstruktor z parametrami
    osoba(char* im, char* nazw)
   {
      imie=im;
      nazwisko=nazw;
      cout<<"Stworzono osobe: "<<imie <<nazwisko<<endl;
   }

   
   //metoda wypisujaca wszystkie dane
   void osoba::Wypisz()
   {
      cout<<"imie: "<<imie<<" Nazwisko: "<<nazwisko<<endl;
   }

   //operator <<
   friend ostream& operator<<(ostream& os, osoba &ob)
   {
      os << ob.imie<<ob.nazwisko << endl;
      return os;
    };

    // operator >>
    friend istream& operator>>(istream& is, osoba &ob)
   {
      is >> ob.imie >> ob.nazwisko;
      return is;
    }


};

//klasa uczen dziedziczaca po osobie
class uczen : public osoba
{
    public:
    short int klasa;   //do "osoba" dodajemy klase
    float srednia_ocen; // i srednia ocen

   // konstruktor domyslny
    uczen():
    osoba(),klasa(0), srednia_ocen(0)
    {
         cout<<"Stworzono ucznia\n";
    }

   //konstryktor kopiujacy
    uczen(const uczen &c):
    osoba(c), klasa(c.klasa), srednia_ocen(c.srednia_ocen)
    {
        cout << "Konstruktor klonowania ucznia" << endl;
    }

   //konstruktor z parametrami
   uczen(short int _klasa, float _srednia_ocen):
   osoba(imie, nazwisko), klasa(_klasa), srednia_ocen(_srednia_ocen)
   {
      cout<<"konstruktor z parametrami"<<endl;
   }


   //metoda wypisujaca dane na ekran
   void uczen::wypisz()
   {
      osoba::Wypisz();
      cout << "Klasa: "<<klasa<<endl;
      cout << "Srednia ocen: "<< srednia_ocen<<endl;
   }

/////////////////////////////////////////////////////////
////////////// OPERATORY ////////////////////////////////
////////////////////////////////////////////////////////
   
   //operator <<
   friend ostream& operator<<(ostream& os, uczen &ob)
   {
      os << ob.imie<< " "<<ob.nazwisko<< " "<<ob.klasa<<" "<<ob.srednia_ocen << endl;
      return os;
    };
   // operator >>
    friend istream& operator>>(istream& is, uczen &ob)
   {
      is >> ob.imie >> ob.nazwisko>>ob.klasa>>ob.srednia_ocen;
      return is;
    }


///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
};

// klasa nauczyciel dziedziczaca po osobie
class nauczyciel : public osoba
{
    public:
    short int staz;   // przy nauczycielu mamy dodatkowo staz
    long int PESEL; // i pesel

   //konstruktor bezargumentowy
    nauczyciel():
    osoba(), staz(0), PESEL(0)
    {
           cout<<"Stworzono nauczyciela\n";
    }
   
   //konstruktor kopiujacy
    nauczyciel(const nauczyciel &c):
    osoba(c), staz(c.staz), PESEL(c.PESEL)
    {
        cout << "Konstruktor klonowania nauczyciela" << endl;
    }

   //konstruktor z parametrami
   nauczyciel(short int _staz, long int _PESEL):
   osoba(imie, nazwisko), staz(_staz), PESEL(_PESEL)
   {
      cout<<"konstruktor z parametrami"<<endl;
   }

   // metoda wypisujaca dane na ekran
   void nauczyciel::wypisz()
   {
      osoba::Wypisz();
      cout << "Staz: "<<staz<<endl;
      cout << "PESEL: "<< PESEL<<endl;
   }

////////////////////////////////////////////////////////
////////////// OPERATORY ////////////////////////////////
////////////////////////////////////////////////////////
   
   //operator <<
   friend ostream& operator<<(ostream& os, nauczyciel &ob)
   {
      os << ob.imie<< " "<<ob.nazwisko<< " "<<ob.PESEL<<" "<<ob.staz << endl;
      return os;
    };
   // operator >>
    friend istream& operator>>(istream& is, nauczyciel &ob)
   {
      is >> ob.imie >> ob.nazwisko>>ob.PESEL>>ob.staz;
      return is;
    }


};
int main(int argc, char* argv[])
{
    return 0;
}
//---------------------------------------------------------------------------

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 06 Dec 2005 14:31   





Back to top
   
Bielsky
Poziom 16
Poziom 16


Joined: 03 Sep 2003
Posts: 315
Location: Bielsko-Biała / Warszawa / Wrocław

Post#2 06 Dec 2005 17:37   

Prosty programik c++ - sprawdzil by mi ktos...?


Gdybyś w funkcji main wrzucił po przykładzie użycia każdej z klas/funkcji - praktycznie nie byłoby co sprawdzać.

Program kompiluje się, obiekty klas da się utworzyć, na pierwszy rzut oka nie widzę większych błędów.

Jedna rzecz: nie wiem, jak podchodzą do tego Twoi wykładowcy - wszystkie funkcje klasy definiujesz w obrębie deklaracji klasy. Rezultat jest taki, że są tworzone przez kompilator jako funkcjie inline. I raczej nie jest to w dobrym stylu.

Nowsze kompilatory wolą, gdy zamiast:
#include <iostream.h>
pisać:
#include <iostream>
using namespace std;
(zmień tak, jeżeli wyskakuje Ci backward warning)
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Prosty programik c++ - sprawdzil by mi ktos...?
Page 1 of 1
Similar topics
Napisze ktoś prosty programik PIC16F84 ? (3)
Prosty programik losujący - totolotek (13)
Poprawilem prosty programik .bat (4)
[Turbo Delphi] Prosty Programik (4)
Asembler (Gnu As) - prosty programik (7)
potrzebuje prosty programik w delphi 5 (1)
Prosty programik w java (4)
Prosty programik w C, problem (9)
Prośba o prosty programik (BASCOM) M16 (35)
Prosty programik w BASCOM proszę o pomoc. (6)

Page generation time: 0.128 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed