Przeładowanie operatora

Odpowiedz Nowy wątek
2014-12-20 23:13
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 :)

Pozostało 580 znaków

2014-12-20 23:18
0

Przez cin?

BTW parametry przekazuj jako const &

float random::operator-(const random& R2)

Pozostało 580 znaków

2014-12-20 23:19
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

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

Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-20 23:27
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;
}

Pozostało 580 znaków

2014-12-20 23:48
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

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-21 07:33
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

Pozostało 580 znaków

2014-12-21 17:38
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;
}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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