[C++] Sumowanie wartości


(Ziomek Zemsty) #1

Witam. 

Borykam się z pewnym problemem. Pobieram wartości za pomocą metody: 

void zespolona::wczytaj()
{
	cin >> Re;
	cin >> Im;
}

wywołując to w taki sposób:

w1->wczytaj();

przy czym:

zespolona *w1 = new zespolona;

analogicznie postępuję dla  w2. 

Nie wiem jednak, jak zsumować wartości w1 i w2, przy czym oddzielnie miałoby być sumowane Re, oddzielnie Im. Coś w stylu:

---PRZYKŁADOWY KOD---
int suma(void)
{
    int sRe = w1.Re + w2.Re;
    int sIm = w1.Im + w2.Im;
    
    return sRe, sIm;
    
    cout<< itd...
}

jednakże ten sposób nie działa. Jak temu zaradzić?

 


(Drobok) #2

Zwracasz int więc się nie dziw. Powinieneś zwrócić tablicę lub typ złożony. Kod wyglądać powinien mniej więcej tak:

#include <iostream>
class zespolona {
private:
  double Re;
  double Im;
public:
  zespolona(){};
  zespolona(double Realis,double Imaginaris){
	  Re=Realis;
	  Im=Imaginaris;
  }
  double Real(){return Re;}
  double Imag(){return Im;}
  void wczytaj()
  {
	std::cin >> Re;
	std::cin >> Im;
  }
  void wyswietl(){
	std::cout << Re<<"+j"<<Im;
  }
};
  zespolona suma(zespolona w1,zespolona w2){
	return zespolona(w1.Real()+w2.Real(),w1.Imag()+w2.Imag());
  }

int main(){
	zespolona var=zespolona();
	var.wczytaj();
	zespolona var2=zespolona(2,3);
	std::cout<<std::endl;
	var.wyswietl();
	std::cout<<std::endl;
	var2.wyswietl();
	std::cout<<std::endl;
	suma(var,var2).wyswietl();
return 0;
}

 


(Zulowski) #3

Odnośnie tego wyżej,jakbyś nie do końca zrozumał:

Twoja metoda 

int suma(void) {...}

Ma zwrócić 1 liczbę typu int, kolega wyżej ładnie rozpisał, że suma 2 liczb zespolonych to nadal liczba zespolona… którą wyświetla.

Mógłbyś też zwracać 2 liczby w tablicy (utrzymam twojego int, chociaż to nie do końca dobrze dobrany typ)

int[] suma(void){ .. }

 


(Ziomek Zemsty) #4
zespolona suma(zespolona w1,zespolona w2){
	return zespolona(w1.Real()+w2.Real(),w1.Imag()+w2.Imag());

Ten fragment powinien wylądować w pliku zespolona.h /// zespolona.cpp /// main.cpp? W jaki sposób to podzielić?


(Drobok) #5

Ja bym tego nie dzielił, funkcja jak funkcja. Ja bym wrzucił to pliku skojarzonego nazewnictwem - jednak imo wciskanie funkcji sumującej 2 wartości do klasy jednej z nich jest bez sensu.


(Ziomek Zemsty) #6

Dziękuję za pomoc! Problem rozwiązany. :wink: