Przeładowanie operatora

0

Witam mam malutki problem, a mianowicie musze przeładować operator odejmowania jako składowa klasy, który w wyniku odejmowania zwróci reszte. Przedstawiam wycinek programu:
Klasa random; R1,R2 obiekty

    friend void operator + (random R1 ,random R2); // w klasie

    float random::operator - (random R2) // definicja
    {
    float xx;
    xx = 1000 - (x*y+R2.x*R2.y);
    cout << "Reszta wynosi: " <<  xx  << endl;
    return xx;
    }

   xx=R1-R2; // wywołanie
 

Wszystko działa tylko teraz musze te 1000 z programu wczytac za pomoca klawiatury, nie mam pomyslu jak to zrobic. Prosze o pomoc, dziekuje :)

0

Przez cin?

BTW parametry przekazuj jako const &

float random::operator-(const random& R2)
0
    friend void operator-(const random &R1 ,const random &R2); // w klasie

    float operator-(const random &R1 ,const random &R2) // definicja
      {
       return 1000 - (x*y+R2.x*R2.y);
      }

Może tak luźno związana z tematem rada: - Dawaj sensowne nazwy typom i zmiennym - bo inaczej sabotujesz własną prace.

0
  1. Zrób ten operator metodą klasy a nie funkcją zaprzyjaźnioną
  2. Przekaż ten 1000 do konstruktora klasy Random
0

Generalnie kod wygląda tak, jednak nie chciałem zamydlać

 
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
class zamowienia
{
    char towar[20];
    float sztuki, cena;
    public:
    zamowienia(char *t,float sz, float c);
    ~zamowienia();
    void wypisz();
    friend void operator + (zamowienia zamowienie1 ,zamowienia zamowienie2);
    float operator - (zamowienia zamowienie2);
};

void operator + (zamowienia zamowienie1 ,zamowienia zamowienie2)
    {
    cout << "zamowienie nr1: " << zamowienie1.towar <<" szt."<< zamowienie1.sztuki << "   cena: "<< zamowienie1.cena << "zl/szt"<<endl;
    cout << "zamowienie nr2: " << zamowienie2.towar <<" szt."<< zamowienie2.sztuki << "   cena: "<< zamowienie2.cena << "zl/szt"<<endl;
    cout << "Do zaplaty: " << zamowienie1.cena*zamowienie1.sztuki + zamowienie2.cena*zamowienie2.sztuki << endl;
    }

    float zamowienia::operator - (zamowienia zamowienie2)
    {
    float xx
    xx = 1000 - (cena*sztuki+zamowienie2.cena*zamowienie2.sztuki);
    cout << "Reszta wynosi: " <<  xx  << endl;
    return xx;
    }

zamowienia::zamowienia(char *t,float sz, float c)
{
    strcpy(towar,t);
    sztuki = sz;
    cena = c;
}
zamowienia::~zamowienia()
{
}
void zamowienia::wypisz()
{
    cout <<towar << " " << sztuki << ", " <<  cena << "zl" << endl;
}

int main()
{
    char t[20];
    float sz,c,xx,k;
    zamowienia zamowienie1("amperomierz_cyfrowy",3,150);
    zamowienie1.wypisz();
    cout << endl;

    cout << "Podaj towar: "; cin >> t;
	cout << "Podaj ilosc: "; cin >> sz;
	cout << "Podaj cene za sztuke: "; cin >> c;
	cout << "---------------" << endl;
    zamowienia zamowienie2 (t,sz,c);

    cout << "Podaj ilosc pieniedzy"; cin >> k;

    zamowienie1+zamowienie2;
    xx=zamowienie1-zamowienie2;



    system ("pause");
    return 0;
}
0

To jakiś bubel projektowy:

  1. Nazywasz zamówieniem jedną pozycje?
  2. Używasz klas a nie używasz string?
  3. Skoro już używasz char * to zrób to dynamicznie.
  4. operator+ którego zadaniem jest wyświetlenie podsumowania dwóch pozycji zamówienia? WTF2
  5. operator- który oblicza o ile mniejsza wartość dwóch pozycji zamówienia od 1000? WTF3
0

To nie jest projekt do własnego użytku, a sposób w jaki mam napisać ten program jest ściśle określony. Po sposobie projektowanie raczej nie musze nadmieniać, że jestem w tym laikiem i po prostu szukam pomocy. Prosiłbym raczej nie zwracać uwagi na kod, bo w nim jak na moje potrzeby jest wszystko okej. Pomocy potrzebuje w tym aby z przeładowania operatora minus liczba od ktorej sie odejmuje w miejscu gdzie aktualnie stoi 1000 byla wczytywana z klawiatury. Oczywistym jest , że za pomocą

 cin 

, nie wiem jednak jak przenieść ją do tego operatora. Przepraszam za kłopot. Pozdrawiam

0

Wcześniej np w mainei to zaczytujesz a do operatora dajesz kolejny parametr. To co napisane wygląda kiepsko, ale jeśli ma tak zostać to:

friend void operator + (random R1 ,random R2); // w klasie

float random::operator - (random R2, int value) // definicja
{
float xx;
xx = value - (x*y+R2.x*R2.y);
cout << "Reszta wynosi: " <<  xx  << endl;
return xx;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1