Házi feladat
Letölthetőek itt.Órai feladat
- Készítsünk halmaz osztályt az 5. kiadott template alapján.
- Ha a fenti kész: Módosítsuk úgy a halmaz osztályt, hogy egy beállított alapméret (ctor paramétere) alatt ne foglaljon új memóriát se a berakás, se a kivétel. Természetesen ekkor már a ctor kell foglaljon alapméretnyi helyet. Ügyeljünk, hogy a copy ctor is helyesen működjön.
const
.
6. Házi feladat.
Egészítsük ki az órai 1. feladat halmaz osztályát az alábbiak szerint.
-
Inicializáláskor a halmazt meg lehessen adni egy elemmel
Halmaz(int)
, valamint egy egész tömb alapján is:Halmaz(const int *t, int elemszam)
(Ügyeljünk, hogy a paraméter tömb ismétlõdõ elemei csak egyszer szerepeljenek a halmazban, és a lefoglalt memória mérete se legyen nagyobb a szükségesnél.) -
Készítsük el a
DiagPrint(Halmaz *)
és aDiagPrint(const Halmaz &)
függvényeket. - Készítsünk
h1 = h2
operátort. Miben különbözik ez a másoló konstruktortól? Két dologban.- Egyrészt itt a balérték (h1) egy már létezõ objektum, tehát ki kell takarítani, hogy ne legyen mem. leak.
- Másrészt
h1=h1
hívás esetén sem szabad rosszul működnie (ekkor semmi tennivaló nincs).
-
Valósítsunk meg néhány operátort: minimálisan a
Halmaz + int
(beszúrás),Halmaz - int
(kivét),Halmaz + Halmaz
(unió),Halmaz * Halmaz
(metszet),Halmaz - Halmaz
(különbség) és aHalmaz == Halmaz
. -
Valósítsunk meg egy osztályon kívüli operátort:
int / Halmaz
(eleme-e). Ehhez célszerű vagy egyint isElement(int);
tagfüggvényt, vagyegyint GetElnum()const;
és egyint GetData(int idx)const;
getter tagfüggvényt alkotni. -
Valósítsuk meg az osztályon kívüli
ostream << Halmaz
(kiírás) operátort. -
Ahol lehet, használjunk referenciát! Ami lehet, az legyen
const
. - A program tagolása a szokásos: 3 file. A .h-t védjük a többszörös beépítés ellen.
- Szorgalmi részfeladat: valósítsd meg a +, - és * operátorok op= alakját!
-
Kipróbáló modul (csak a jelzett helyen szúrhatsz be újabb sorokat, illetve a kiírások formázásához \n karaktereket, mást ne változtass!):
#include <iostream> #include "Halmaz.h" int main() { Halmaz a; // [] Halmaz b(3); // [3] Halmaz c(b); // [3] b.beszur(5); // [3,5] std::cout<<b; // 3,5 a.beszur(5); // [5] a.beszur(3); // [5,3] c=a; b=b; DiagPrint(a); //ref DiagPrint(&b); //ptr DiagPrint(c); std::cout << (c==b ? "azonos\n" : "kulonbozo\n"); // ki: azonos. a=a+4; // [5,3,4] int v[6]={6,5,6,4,4,5}; Halmaz d(v,6); // [6,5,4] c=a*d; b=a+d; std::cout<<"c:"<<c<<" b:"<<b; // c:5,4 b:5,3,4,6 b=b-5; //[3,4,6] std::cout<<5/b<<5/c; // 0 1 b=a=c; //ide meg tehetsz kodot tovabbi operatoraid tesztelesehez return 0; }