UGTV
Results 1 to 6 of 6

Thread: c++

  1. #1


    Location
    Braila
    Posts
    192

    Character Level
      180
    Character Class
      Warrior

    Status: Offline

    Default c++

    se pricepe cnv la c++,daca da am nevoie si eu de putin ajutor daca nu asta este.....

    am nevoie de: o clasa la alegere, sa se defineasca: constructor de clasa, constructor de copiere, destructor, supraincarcari pentru operatorul de atribuire si operatorii de intrare si iesire si alti 5 operatori la alegere. Sa se exemplifice utilizarea in main().

    sper sa fie cnv cu programarea pe aici

  2. #2

    PuPuu's Avatar
    Location
    Cluj
    Posts
    1,158

    Character Name
     pupuuu
    Character Level
      190
    Character Class
      Warrior

    Status: Offline

    Default

    #include <cstdio>
    #include <iostream>
    #include <cstdlib>

    using namespace std;

    class Rational {
    private:
    int numarator, numitor;
    public:
    Rational(int, int);
    Rational(const Rational &);
    ~Rational();
    int getNumarator() const;
    int getNumitor () const;
    void setNumarator(int);
    void setNumitor(int);
    void simplify();
    Rational operator =(const Rational &);
    Rational operator +=(const Rational &);
    Rational operator -=(const Rational &);
    Rational operator *=(const Rational &);
    Rational operator /=(const Rational &);
    };

    bool egale(const Rational &, const Rational &);
    int cmmdc(int, int);
    int abs(int);
    Rational operator +(const Rational &, const Rational &);
    Rational operator -(const Rational &);
    Rational operator -(const Rational &, const Rational &);
    Rational operator *(const Rational &, const Rational &);
    Rational operator /(const Rational &, const Rational &);
    bool operator ==(const Rational &, const Rational &);
    ostream& operator <<(ostream &, const Rational &);

    Rational::Rational(int numarator = 0, int numitor = 1)
    : numarator(numarator), numitor(numitor) {
    this->simplify();
    }
    Rational::~Rational() {
    }
    int Rational::getNumarator() const {
    return numarator;
    }
    int Rational::getNumitor() const {
    return numitor;
    }
    void Rational::setNumarator(int numarator) {
    this->numarator = numarator;
    }
    void Rational::setNumitor(int numitor) {
    this->numitor = numitor;
    }

    void Rational::simplify() {
    int d = cmmdc(abs(this->getNumarator()), abs(this->getNumitor()));
    if(d == 0)
    this->setNumitor(1);
    else {
    this->setNumarator(this->getNumarator() / d);
    this->setNumitor(this->getNumitor() / d);
    }

    // daca fractia e negativa atunci semnul - il pun la numarator
    if(this->getNumarator() >= 0 && this->getNumitor() < 0) {
    this->setNumarator(-this->getNumarator());
    this->setNumitor(-this->getNumitor());
    }
    }

    int abs(int a) {
    return a > 0 ? a : -a;
    }

    int cmmdc(int a, int b) {
    int r = a % b;
    while(r) {
    a = b;
    b = r;
    r = a % b;
    }
    return b;
    }

    Rational::Rational(const Rational &r) {
    numarator = r.numarator;
    numitor = r.numitor;
    }

    Rational operator +(const Rational &a, const Rational &b) {
    Rational suma;
    int ampl_a, ampl_b, cmmmc;

    ampl_a = ampl_b = 1;
    cmmmc = a.getNumitor();

    // aduc la acelasi numitor
    if(a.getNumitor() != b.getNumitor()) {
    cmmmc = (a.getNumitor() * b.getNumitor()) / cmmdc(a.getNumitor(), b.getNumitor());
    ampl_a = cmmmc / a.getNumitor();
    ampl_b = cmmmc / b.getNumitor();
    }

    suma.setNumitor(cmmmc);
    suma.setNumarator(a.getNumarator() * ampl_a + b.getNumarator() * ampl_b);
    suma.simplify();

    return suma;
    }

    Rational operator -(const Rational &a) {
    // varianta unara
    return Rational(-a.getNumarator(), a.getNumitor());
    }

    Rational operator -(const Rational &a, const Rational &b) {
    // varianta binara
    // a - b = a + (-b)
    return a + (-b);
    }

    Rational operator *(const Rational &a, const Rational &b) {
    return Rational(a.getNumarator() * b.getNumarator(), a.getNumitor() * b.getNumitor());
    }

    Rational operator /(const Rational &a, const Rational &b) {
    // a / b = a * (1 / b)
    Rational b_invers(b.getNumitor(), b.getNumarator());
    Rational rezultat(a * b_invers);
    rezultat.simplify();
    return rezultat;
    }

    Rational Rational:perator =(const Rational &a) {
    this->setNumarator(a.getNumarator());
    this->setNumitor(a.getNumitor());
    return *this;
    }

    Rational Rational:perator +=(const Rational &a) {
    return *this = *this + a;
    }

    Rational Rational:perator -=(const Rational &a) {
    return *this = *this - a;
    }
    Rational Rational:perator *=(const Rational &a) {
    return *this = *this * a;
    }
    Rational Rational:perator /=(const Rational &a) {
    return *this = *this / a;
    }

    bool operator ==(const Rational &a, const Rational &b) {
    // produsul mezilor = produsul extremilor
    if(a.getNumarator() * b.getNumitor() == a.getNumitor() * b.getNumarator()) return true;
    return false;
    }

    ostream& operator <<(ostream& out, const Rational &r) {
    out << r.getNumarator() << " / " << r.getNumitor() << endl;
    return out;
    }

    istream& operator >>(istream& in, Rational &r) {
    int x, y;
    cout << "Introduceti numaratorul: ";
    in >> x;
    cout << "Introduceti numitorul: ";
    in >> y;
    r.setNumarator(x);
    r.setNumitor(y);
    r.simplify();
    return in;
    }

    int main(int argc, char* argv[])
    {
    Rational a(3, -4), b(3, 6);
    cout << "a = "; cout << a;
    cout << "b = "; cout << b;

    cout << "a + b = "; cout << (a + b);

    cout << "a - b = "; cout << (a - b);

    cout << "a * b = "; cout << (a * b);

    cout << "a / b = "; cout << (a / b);

    cout << "Relatia a / b = 1 / (b / a) este ";
    if(a / b == 1 / (b / a))
    cout << "adevarata.";
    else
    cout << "falsa.";
    cout << endl;

    Rational c;
    c = a;
    cout << "c = "; cout << c;

    c += a;
    cout << "c = "; cout << c;

    c /= (-3);
    cout << "c = "; cout << c;

    Rational d;
    cin >> d;

    cout << d;

    system("pause");
    return 0;
    }





    ;x

  3. #3

    boory's Avatar
    Posts
    121

    Character Name
     GrizzlyRo
    Character Level
      125
    Character Class
      Force Shielder

    Status: Offline

    Default

    si eu care tremin cls a 10-a la mate-info intensiv info ma consideram un geniu al informaticii =)).....dar cand am vazut asta era sa fac infart =)))


  4. #4

    BlacKyy's Avatar
    Posts
    36

    Character Name
     xBlacKyy
    Character Level
      16x
    Character Class
      Wizard

    Status: Offline

    Default

    eu termin a 11a si tot e prea avansata ptr mn....abea acum am inceput sa invat "clasele" alea....da se termina scoala...deci la anu.....


  5. #5

    Simplicity's Avatar
    Posts
    234

    Character Class
      Force Archer

    Status: Offline

    Default

    Quote Originally Posted by boory View Post
    si eu care tremin cls a 10-a la mate-info intensiv info ma consideram un geniu al informaticii =)).....dar cand am vazut asta era sa fac infart =)))
    Pentru ca ce se invata la noi in licee este o struto-camila de C cu C++. Se invata object-based commands ( cout/cin ) in loc de scanf/printf, specifice limbajului C, dar in rest nu lucram cu clase si obiecte specifice limbajelor OOP. Bine, daca e sa o luam asa nici C++ nu este in totalitate un limbaj OOP.
    In mare parte e okay, dar vezi *** il trimiti la scoala, ca unele lucruri nu te invata sa le faci asa.

  6. #6

    PuPuu's Avatar
    Location
    Cluj
    Posts
    1,158

    Character Name
     pupuuu
    Character Level
      190
    Character Class
      Warrior

    Status: Offline

    Default

    *** adica in mare parte e okay lol..............

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •