Przeciążanie operatów dla klasy obiektów z tablicami
Ostatnio zmodyfikowano 2015-03-31 14:42
NXVII Temat założony przez niniejszego użytkownika |
Przeciążanie operatów dla klasy obiektów z tablicami » 2015-03-31 02:10:05 Witam, mam problem z przeciążeniem operatora sumy dla 2 obiektów będących tablicami liczb całkowitych. Dodawanie powinno działać tak żeby sumowało odpowiadające sobie elementy dwóch tablic i wpisywało wyniki do tablicy trzeciego obiektu (np. a.tab[1] + b.tab[1] = c.tab[1]). Próbowałem użyć do tego pętli sumującej po kolei wszystkie odpowiadające sobie elementy ale nie wiem jak mógłbym odnieść się do obiektu do którego mają być wpisywane wyniki. Dopiero co zaczynam uczyć się programowania obiektowego i nie wiem jak sobie z tym poradzić, bardzo proszę o pomoc. dołączam swój kod: #include <iostream>
using namespace std;
class Pudelko { private: int * tab; public: int licznik; Pudelko( int a ) { licznik = a; tab = new int[ a ]; } void wpisywanie() { for( int i = 0; i < licznik; i++ ) { cout << "Podaj " << i + 1 << " wyraz" << endl; cin >> tab[ i ]; } } void wypisywanie() { for( int i = 0; i < licznik; i++ ) { cout << "Wyraz " << i + 1 << ". to: " << tab[ i ] << endl; } cout << endl; } Pudelko operator +( const Pudelko & n ) { for( int i = 0; i < licznik; i++ ) { n.tab[ i ] + this->tab[ i ]; } } ~Pudelko() { delete[] tab; tab = 0; } };
int main() { int a = 2; Pudelko k( a ); k.wpisywanie(); k.wypisywanie(); Pudelko j( a ); j.wpisywanie(); j.wypisywanie(); Pudelko g( a ); g = j + k; cout << "po dodaniu" << endl; g.wypisywanie(); return 0; }
|
|
darko202 |
» 2015-03-31 10:29:03 1. przeczytaj http://cpp0x.pl/artykuly/?id=15http://cpp0x.pl/kursy/Programowanie-obiektowe-C++/Podstawy/Operatory/4982. przy dodawaniu trzeba pamiętać, że obiekty mają tablice dynamiczne i jeśli mamy : o1 ( //tablica 5 elementowa) o2 ( //tablica 11 elementowa) to odwoływalibyśmy się do nieistniejących elementów np. o1.tab[ 5] dlatego trzeba to w rozwiązaniu uwzględnić przy (np. a.tab[ i] + b.tab[ i] = c.tab[ i]) 3 nie jestem pewny, ale chyba tak mogła wyglądać metoda operatora + Pudelko operator +( const Pudelko & o ) { int ktory = 1; if( this.licznik < o.licznik ) ktory = 0; int ileMax =( ktory ? this.licznik: o.licznik ); int ileMin =( !ktory > o.licznik ? this.licznik: o.licznik ); { Pudelko temp = new int[ ileMax ]; for( int i = 0; i < licznik; i++ ) { if( i < ileMin ) temp.tab[ i ] = o.tab[ i ] + this->tab[ i ]; else if( ktory ) temp.tab[ i ] = this.tab[ i ]; else temp.tab[ i ] = o..tab[ i ]; } return temp; } }
podobnie Pudelko operator +( Pudelko & l, Pudelko & p ); |
|
NXVII Temat założony przez niniejszego użytkownika |
» 2015-03-31 14:42:22 Dzięki wielkie, właśnie o to mi chodziło. Wpadłem wcześniej na pomysł z tym tymczasowym obiektem ale nie widziałem jak to zapisać i wychodzi na to, że za szybko się poddałem ;) |
|
« 1 » |