Informatika3-2024/Gyakorlat5

A MathWikiből

Tartalomjegyzék

Feladatok

Minden feladathoz nyiss új projektet IDE-ben vagy írd új file-ba ha parancssorból dolgozol!

Mostantól .cpp kiterjesztésû file-okban dolgozzunk!

Complex osztály elõadásról

Futassuk le az elõadáson látott Complex osztályt:

#include<iostream>
#include<cmath>
 
using namespace std;
 
 
class Complex {
private:
  float re;
  float im;
public:
  Complex();
  Complex(const Complex& other);
  Complex(float r);
  Complex(float r, float i);
 
  Complex add(Complex other);
  Complex times(Complex other);
  float abs();
 
  void print();
 
  ~Complex();
};
 
Complex::Complex() {
  re = 0;
  im = 0;
}
 
Complex::Complex(const Complex& other) {
  re = other.re;
  im = other.im;
}
 
Complex::Complex(float r) {
  re = r;
  im = 0;
}
 
Complex::Complex(float r, float i) {
  re = r;
  im = i;
}
 
Complex Complex::add(Complex other) {
  return Complex(this->re + other.re, this->im + other.im);
}
 
Complex Complex::times(Complex other) {
  float real = this->re * other.re - this->im * other.im;
  float imag = this->re * other.im + this->im * other.re;
  return Complex(real, imag);
}
 
float Complex::abs() {
  return sqrt(this->re * this->re + this->im * this->im);
}
 
void Complex::print() {
  cout << re << " + " << im << "i" << endl;
}
 
Complex::~Complex() {
}
 
int main(void) {
  Complex a;
  Complex b = Complex(1,2);
  Complex c = a.times(b);
 
  a.print();
  b.print();
  c.print();
 
  (b.add(c)).print();
 
  cout << b.abs() << endl;
 
  return 0;
}


Téglalap

Készítsünk egy téglalap osztályt!

  • Létrehozáskor kelljen megadni az oldalak hosszát.
  • Tudjuk lekérdezni a területét és kerületét.
  • Legyen egy scale metódusa, amivel nagyítani tudjuk (adott számmal szorzódik mind2 oldal).
  • Lehessen másolni így (copy konstruktor):
Tegla a(2, 5);
Tegla b(a);


Vissza a komplexre

Nézzünk vissza a Complex osztályra. Etessük meg a kódot a pythontutor-al és kövessük végig, hogy mikor melyik metódus, konstruktor hívódik meg.


String osztály

Írjunk String osztályt, amivel kényelmesebben tudunk stringeket kezelni.

  • Default konstruktor üres string-et hozzon létre
  • Lehessen C string-bõl konstruálni, ekkor a konstruktor fejének így kell kinéznie:
String(const char* s);
  • Lehessen lekérni a hosszát
  • Legyen print metódus, ami kiírja a string-et
  • Lehessen két String-et konkatenálni


Láncolt lista

Valósítsuk meg a korábban használt láncolt listát mostmár osztályokkal. Tároljon a lista float-okat. A következõk mûködjenek:

  • default konstruktor: üres lista
  • copy konstruktor
  • konstruktor ami tömbbõl építi fel a listát
  • destruktor
  • append: új elem berakása
  • insert: új elem adott helyre berakása
  • size: tárolt elemek számát adja vissza
  • in: az adott elem benne van-e a listában
  • index: adott indexû elemet adja vissza
  • remove: adott indexû elemet törli a listából
  • where: visszaadja az elsõ indexet ahol elõfordul az adott érték, -1-et, ha nincs a listában
Személyes eszközök