Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kilka zadań do sprawdzenia (poprawy) - potrzebna pomoc

Ostatnio zmodyfikowano 2011-09-30 23:19
Autor Wiadomość
marcincinekk
Temat założony przez niniejszego użytkownika
Kilka zadań do sprawdzenia (poprawy) - potrzebna pomoc
» 2011-09-30 21:03:00
Witajcie :)

Mam do was prośbę, byście sprawdzili kilka zadań. Jeśli są błędy, niedociągnięcia to je poprawili.

A oto one

Zadanie 1.

Polecenie:
Proszę napisać program, zawierający klasę NaszaKlasa ze zmienną składową o nazwie 'lu' typu int niedostępną z zewnątrz, przeciążonym konstruktorem w wersji zero- i jednoargumentowej inicjalizującym wartość zmiennej 'lu', destruktorem, wypisującym komunikat "Niszcze klase" oraz publiczną funkcją składową o nazwie 'wlu', zwracającą wartość zmiennej 'lu' i wypisującą tę wartość na ekranie. W funkcji 'main' powinny być utworzone dwa obiekty klasy NaszaKlasa, w tym jeden dynamicznie, a funkcja 'wlu' powinna być dwukrotnie wywołana.

kod
C/C++
#include <iostream>

using namespace std;

class NaszaKlasa
{
   
private:
    int lu;
   
public:
    NaszaKlasa();
    NaszaKlasa( int a );
    ~NaszaKlasa();
    int wlu( int lu )
    {
        cout << lu << endl;
        return lu;
    }
   
};

NaszaKlasa::NaszaKlasa()
{
    lu = 0;
}

NaszaKlasa::NaszaKlasa( int a )
{
    lu = a;
}

NaszaKlasa::~NaszaKlasa()
{
    cout << "Niszcze klase" << endl;
}


int main()
{
   
    NaszaKlasa ob1;
    NaszaKlasa * ob2 = new NaszaKlasa();
   
    ob1.wlu( 3 );
    ob2->wlu( 4 );
    delete ob2;
   
    //system("PAUSE");
    return 0;
   
}


Zadanie 2

Polecenie:
Proszę napisać program, który oprócz klasy NaszKlasa zawiera również dziedziczącą po niej klasie WaszaKlasa ze zmienna składową typu int o nazwie 'ln'. Składowa 'lu' klasy NaszaKlasa powinna być dostępna dla klas potomnych i tylko dla tych klas. Konstruktor klasy WaszaKlasa powinien być przeciążony i posiadać wersję zero- i dwuargumentową, przy czym wersja dwuargumentowa powinna wywoływać jednoargumentową wersję konstruktora klasy NaszaKlasa. Klasa WaszaKlasa powinna też zawierać funkcje składową o nazwie 'wlu2', zwracająca wartość 'ln' oraz wartości składowe 'lu' i 'ln'.

kod
C/C++
#include <cstdlib>
#include <iostream>

using namespace std;

class NaszaKlasa
{
   
protected:
    int lu;
   
public:
    NaszaKlasa();
    NaszaKlasa( int a );
    ~NaszaKlasa();
    int wlu( int lu )
    {
        cout << lu << endl;
        return lu;
    }
   
};

NaszaKlasa::NaszaKlasa()
{
    lu = 0;
}

NaszaKlasa::NaszaKlasa( int a )
{
    lu = a;
}

NaszaKlasa::~NaszaKlasa()
{
    cout << "Niszcze klase" << endl;
}

class WaszaKlasa
    : public NaszaKlasa
{
public:
    int ln;
   
    WaszaKlasa();
    WaszaKlasa( int a, int b );
    int wlu2( int ln, int lu )
    {
        cout << lu << " " << ln << endl;
        return ln;
    }
};

WaszaKlasa::WaszaKlasa()
{
    ln = 0;
}
WaszaKlasa::WaszaKlasa( int a, int b )
    : NaszaKlasa( a )
{
    ;
    ln = a;
    lu = b;
}

int main()
{
    NaszaKlasa ob1;
    NaszaKlasa * ob2 = new NaszaKlasa();
    WaszaKlasa ob3;
   
    ob1.wlu( 3 );
    ob2->wlu( 4 );
    delete ob2;
    ob3.wlu2( 5, 6 );
   
    //system("PAUSE");
    return 0;
   
}


Zadanie 3

Polecenie
Proszę napisać program, zawierający klasę Czworonog. klasa powinna zawierać dwie zmienne składowe typu long o nazwach 'ls' i 'ln', przy czym składowa 'ln' powinna być statyczna i zainicjalizowana wartością 4. Ponadto, klasa Czworonog powinna zawierać pusty zeroargumentowy kontstruktor i destruktor, wyświetlający napis "tu pogromca zwierzat", a także statyczną funkcję składową o nazwie 'pokaz_ln', która zwraca wartość zmiennej 'ln', a także wyświetla tę wartość. W funkcji 'main' należy utworzyć jeden obiekt klasy Czworonog, a także wywołać 'pokaz_ln'

kod
C/C++
#include <iostream>

using namespace std;

class Czworonog
{
protected:
    long ls;
    static long ln;
   
public:
    Czworonog();
    ~Czworonog();
    static long pokaz_ln()
    {
        cout << ln << endl;
        return ln;
    }
};
Czworonog::Czworonog()
{
    //    //Pusto.
}

Czworonog::~Czworonog()
{
    cout << "Tu pogromca zwierz¹t" << endl;
}

long Czworonog::ln = 4;

int main()
{
    Czworonog ob1;
    ob1.pokaz_ln();
    //system("PAUSE");
    return 0;
}


Zadanie 4

Polecenie:
Proszę napisać program zawierający klasę Deszcz z pustym konstruktorem zeroargumentowym, destruktorem wyświetlającym komunikat napis "precz z chmurami", oraz publiczną funkcje składową o nazwie 'pokaz' zwracającą wartość typu char i wyświetlającą napis "niech zaleje swiat". W funkcji 'main' powinny być utworzone dwa obiekty klasy Deszcz, w tym jeden dynamicznie, a funkcja pokaz powinna być dwukrotnie wywołana.

kod
C/C++
#include <iostream>
using namespace std;

class Deszcz
{
public:
    Deszcz();
    ~Deszcz();
   
public:
    char pokaz()
    {
        cout << "Niech zaleje œwiat" << endl;
        return( 'a' );
    }
};
Deszcz::Deszcz()
{
}
Deszcz::~Deszcz()
{
    cout << "Precz z chmurami" << endl;
}

int main()
{
    Deszcz ob1;
    Deszcz * ob2 = new Deszcz();
   
    ob1.pokaz();
    ob2->pokaz();
    delete ob2;
    //system("PAUSE");
    return 0;
   
}


Zadanie 5

Polecenie:
Proszę napisać program który oprócz klasy Deszcz zawiera również dziedziczącą po niej klasę Burza z prywatną zmienną składową typu int o nazwie 'lps'. Konstruktor klasy Burza ma być przeciążony i posiadać wersję zero- i jednoargumentową przy czym obie wersje powinny wywoływać konstruktor klasy Deszcz oraz inicjalizować wartość zmiennej 'lps'. Klasa Burza powinna też zawierać funkcję składową o nazwie 'pokaz2', zwracającą wartość 'lps' oraz wyświetlającą wartości składowych zarówno tę wartość. W funkcji 'main' należy utworzyć dynamicznie obiekty klasy Deszcz, a także obiekt klasy Burza, wywołać funkcje 'pokaz' i 'pokaz2'.

kod
C/C++
#include <iostream>
using namespace std;

class Deszcz
{
public:
    Deszcz();
    ~Deszcz();
   
public:
    char pokaz()
    {
        cout << "Niech zaleje œwiat" << endl;
        return( 'a' );
    }
};
Deszcz::Deszcz()
{
}
Deszcz::~Deszcz()
{
    cout << "Precz z chmurami" << endl;
}

class Burza
    : public Deszcz
{
private:
    int lps;
   
public:
    Burza();
    Burza( int );
    int pokaz2( int lps )
    {
        cout << lps << endl;
        return lps;
    }
};
Burza::Burza()
    : Deszcz()
    , lps( 3 )
{
}
Burza::Burza( int a )
    : Deszcz()
    , lps( 4 )
{
    lps = a;
}

int main()
{
    Deszcz * ob1 = new Deszcz;
    Burza * ob2 = new Burza;
   
    ob1->pokaz();
    delete ob1;
    ob2->pokaz2( 4 );
    delete ob2;
    //system("PAUSE");
    return 0;
   
}


Zadanie 6

Polecenie:
Proszę napisać program, zawierający klasę Rower. Klasa powinna zawierać dwie zmienne składowe, jedną typu int o nazwie 'lk', drugą statyczną typu float o nazwie 'przebieg', przy czym składowa 'przebieg' powinna być zainicjalizowana wartością 40.0F. Ponadto, klasa Rower powinna zawierać jednoargumentowy konstruktor inicjalizujący wartość zmiennej 'lk' oraz destruktor, wyświetlający napis "miazdze rowery", a także statyczną funkcję składową o nazwie 'daj_przebieg', która zwraca wartość zmiennej 'przebieg', a także wyświetla tę wartość. W funkcji 'main' należy utworzyć jeden obiekt klasy Rower, a także wywołać funkcję 'daj_przebieg', przypisując zwracaną przez nią wartość zmiennej o nazwie 'uff'.

kod
C/C++
#include <cstdlib>
#include <iostream>

using namespace std;

class Rower
{
    int lk;
    static float przebieg;
   
public:
    Rower();
    ~Rower();
    static float daj_przebieg();
};
Rower::Rower()
    : lk( 3 )
{
    //Pusto
}
Rower::~Rower()
{
    cout << "Miazdze rowery" << endl;
}
float Rower::daj_przebieg()
{
    cout << przebieg << endl;
    return przebieg;
}

float Rower::przebieg = 40.0;

int main()
{
    Rower ob1;
    float uff = ob1.daj_przebieg();
   
    cout << uff << endl;
    //system("PAUSE");
    return 0;
   
}

Będę bardzo wdzięczny za każdą pomoc.


Edit///
Jeszcze napiszę czego jestem najmniej pewien, co mi sprawia największą trudność.
- inicjalizacja wartości zmiennej w konstruktorze
- wywołanie konstruktora jednoarg. w konstruktorze dwuarg.
- zwracanie wartości typu char
- przeciążeni konstruktora
- pusty zaargumentowany konstruktor
P-41571
malan
» 2011-09-30 21:49:48
oraz publiczną funkcją składową o nazwie wlu, zawierającą wartość zmiennej lu
Zawierającą? Nie powinno być zwracającą?
We wszystkich zadaniach, w których przydzielasz dynamicznie pamięć masz ten sam błąd. Przeczytaj: » Kurs C++Dynamiczne zarządzanie pamięcią new i delete lekcja.

Zadanie 2.
przy czym wersja dwuargumentowa powinna wywoływać jednosrgumentową wersję konstruktora klasy NaszaKlasa
C/C++
WaszaKlasa::WaszaKlasa( int a, int b )
{
    NaszaKlasa();
    ln = a;
    lu = b;
}

Zadanie 3.
C/C++
long Czworonog::ln = 4;
Nie da się inaczej tego zrobić?

Zadanie 5.
C/C++
Burza::Burza( int a )
    : lps( 4 )
{
    Deszcz();
    lps = a;
}
Bezsens.

C/C++
int pokaz2( int lps )
{
   
    return lps;
}
Na pewno tak to miało być?

Na pewno coś jeszcze by się znalazło, ale najpierw popraw literówki. Potem będziemy myśleć dalej.
P-41573
marcincinekk
Temat założony przez niniejszego użytkownika
» 2011-09-30 22:23:13
I właśnie z tym mam problemy.
Poprawiłem literówki i delete.
Co do statycznej wydawało mi się, że jest to najprostszy sposób.
P-41574
malan
» 2011-09-30 23:19:39
Co do statycznej wydawało mi się, że jest to najprostszy sposób.
Masz rację, mój błąd.
P-41577
« 1 »
  Strona 1 z 1