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
(Drobok)
7 Marzec 2016 21:16
#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
(Zulowski)
8 Marzec 2016 15:46
#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){ .. }
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
(Drobok)
9 Marzec 2016 17:30
#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.
Dziękuję za pomoc! Problem rozwiązany.