• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 22:23:43 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 22:23:43 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[Today at 21:32:50]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[Today at 21:25:42]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[Today at 20:59:13]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 19:46:54]

[Γραφική] Λυμένα θέματα
by okanpala
[Today at 18:56:22]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 14:25:00]

Αντικατάστασης πυκνωτή σε...
by george14
[Today at 13:58:20]

Πότε θα βγει το μάθημα; -...
by tzortzis
[Today at 13:19:53]

Αποτελέσματα Εξεταστικής ...
by george14
[Today at 12:08:25]

[ΨEE] Γενικές απορίες και...
by Juror8
[Today at 12:06:57]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426698
Total Topics: 31710
Online Today: 242
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 60
Guests: 133
Total: 193
donnis
anna.ts
engineer2030
iliaskou
stefanos hios
mavropan
dimitire
ikallima
plapas
msandr
elischat
ThanosKoutsoump
giorgosm05
ecevz
Fidelity
geo66
kmarkad
Jimlam
Νικη
bit11
EvP
Elenit
Farmengineer
alexandraskol
ioannisfa
rafail zisiadis
Pumpakos
Raphael
giorgosss03
lasef
dimchin
meliou
Manifold
vagelismo
tzortzis
dtsiamis
aachmet
andreassifo
stergiosb
iakov
Ioakeim Zisis
Eleniiii
mmikelo
unreasonable
pordozoumis
pavlaras
Giannis Masterio
Soterd52
nikos123321
eirinistyl
elenak
mdimitrig
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
ΦΙδανης Αριστοτελης
alexanton
apapathe
Balourdos
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Για οποιοδήποτε πρόβλημα με register/login, στείλτε email στο contact@thmmy.gr.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 2ο Εξάμηνο > Αντικειμενοστραφής Προγραμματισμός (Moderators: chatzikys, tzortzis) > [C++] 5η Εργασια 2009
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 3 ... 6 Go Down Print
Author Topic: [C++] 5η Εργασια 2009  (Read 10319 times)
Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
[C++] 5η Εργασια 2009
« on: November 12, 2009, 12:10:59 pm »

Εργασία Ε

Για την επίλυση ενός συστήματος γραμμικών εξισώσεων a*x=b, όπου a τετραγωνικός πίνακας, x το διάνυσμα των αγνώστων και  b το διάνυσμα των σταθερών όρων,  μπορεί να εφαρμοστεί ένας επαναληπτικός αλγόριθμος ο οποίος υλοποιείται από τη σχέση  z=(b-a*x+d*x)/d ,όπου a ο πίνακας των συντελεστών των αγνώστων του συστήματος, b το διάνυσμα των σταθερών όρων και d το διάνυσμα που έχει ως συνιστώσες τα διαγώνια στοιχεία του πίνακα a. Η εφαρμογή της πιο πάνω σχέσης δίνει μια καλύτερη προσέγγιση z για το διάνυσμα της λύσης από ότι εκείνη μιας αρχικής προσέγγισης  της λύσης με το διάνυσμα x. Η διαδικασία εφαρμόζεται επαναληπτικά θέτοντας x=z έως ότου το άθροισμα Σ|zi-xi| ,όπου zi,xi οι αντίστοιχες συνιστώσες των διανυσμάτων z και x, γίνει μικρότερο από έναν μικρό αριθμό e που δηλώνει την επιθυμητή ακρίβεια του αποτελέσματος.

Να γραφεί το λογισμικό στο οποίο να ορίζεται η κλάση matrix η οποία υλοποιεί έναν πίνακα δύο διαστάσεων. Η κλάση να διαθέτει μια συνάρτηση αρχικών συνθηκών η οποία να δέχεται ως ορίσματα τις διαστάσεις του  πίνακα, να δεσμεύει δυναμικά μνήμη για τα στοιχεία του και να διαβάζει τιμές για τα στοιχεία αυτά. Στην κλάση να οριστεί μια επικάλυψη του τελεστή [ ] τέτοια ώστε η έκφραση a[j], όπου a αντικείμενο τύπου matrix, να επιστρέφει την τιμή του στοιχείου του πίνακα που ορίζει το αντικείμενο a και το οποίο βρίσκεται στην i γραμμή και στην j στήλη του πίνακα.

Στο λογισμικό να οριστεί ακόμη η κλάση vector η οποία  υλοποιεί ένα διάνυσμα. Στην κλάση να ορίζονται:

α) Μια επικάλυψη του τελεστή = τέτοια ώστε η έκφραση d = a, όπου d αντικείμενο τύπου vector και a αντικείμενο τύπου matrix, να δεσμεύει την απαραίτητη μνήμη και να καταχωρεί σε αυτήν ως συνιστώσες του διανύσματος d τα διαγώνια στοιχεία του πίνακα a.

β) Μία επικάλυψη του τελεστή * τέτοια ώστε η έκφραση v*d  όπου v και d αντικείμενα τύπου vector να επιστρέφει ένα αντικείμενο του ίδιου τύπου στο οποίο το διάνυσμα που υλοποιεί να έχει ως συνιστώσες το γινόμενο των αντιστοίχων συνιστωσών των διανυσμάτων που υλοποιούν τα αντικείμενα v και d.  

γ) Μία επικάλυψη του τελεστή - τέτοια ώστε η έκφραση v-d  όπου v και d αντικείμενα τύπου vector να επιστρέφει ένα αντικείμενο του ίδιου τύπου στο οποίο το διάνυσμα που υλοποιεί να έχει ως συνιστώσες τη διαφορά των αντιστοίχων συνιστωσών των διανυσμάτων που υλοποιούν τα αντικείμενα v και d.

δ) Μία επικάλυψη του τελεστή + τέτοια ώστε η έκφραση v+d  όπου v και d αντικείμενα τύπου vector να επιστρέφει ένα αντικείμενο του ίδιου τύπου στο οποίο το διάνυσμα που υλοποιεί να έχει ως συνιστώσες το άθροισμα των αντιστοίχων συνιστωσών των διανυσμάτων που υλοποιούν τα αντικείμενα v και d.

ε) Μία επικάλυψη του τελεστή / τέτοια ώστε η έκφραση v/d  όπου v και d αντικείμενα τύπου vector να επιστρέφει ένα αντικείμενο του ίδιου τύπου στο οποίο το διάνυσμα που υλοποιεί να έχει ως συνιστώσες το πηλίκο των αντιστοίχων συνιστωσών των διανυσμάτων που υλοποιούν τα αντικείμενα v και d.

στ) Μία επικάλυψη του τελεστή [ ] τέτοια ώστε η έκφραση v, όπου v αντικείμενου τύπου vector να επιστρέφει την τιμή της i συνιστώσας του διανύσματος που υλοποιεί το αντικείμενο v.

ζ) Μία επικάλυψη του τελεστή ++ τέτοια ώστε η έκφραση ++v, όπου v αντικείμενο τύπου vector να επιστρέφει  το άθροισμα των απολύτων τιμών των συνιστωσών του διανύσματος που υλοποιεί το αντικείμενο v.

Στο λογισμικό να ορίζεται ακόμη μια επικάλυψη γενικής χρήσης του τελεστή * τέτοια ώστε η έκφραση a*x όπου a αντικείμενο τύπου matrix και x αντικείμενο τύπου vector να επιστρέφει ένα αντικείμενο τύπου vector στο οποίο το διάνυσμα που υλοποιεί να είναι το γινόμενο του πίνακα που υλοποιεί το αντικείμενο a επί το διάνυσμα που υλοποιεί το αντικείμενο x.

Η συνάρτηση main στο πρόγραμμα να ορίζει και να δημιουργεί τα απαραίτητα αντικείμενα για την επίλυση ενός συστήματος γραμμικών εξισώσεων. Να διαβάζει ένα μέγιστο αριθμό επαναλήψεων και να εφαρμόζει για τον αριθμό αυτόν την επαναληπτική μέθοδο επίλυσης που περιγράφηκε πιο πάνω.

Σημείωση: Η συνάρτηση επικάλυψης του τελεστή * για γενική χρήση να μην οριστεί ως φιλική στις κλάσεις matrix και vector.

Οι τιμές του πίνακα και των διανυσμάτων, όπου χρειαστεί, να ανακαλούνται με τη χρήση του τελεστή [ ].

Επειδή η σύγκληση του αλγόριθμου δεν είναι πάντα εξασφαλισμένη για τις δοκιμές σας να χρησιμοποιήσετε το σύστημα

5x1+2x2+x3   = 8

x1+7x2+x3       =9

2x1+2x2+8x3=12

το οποίο έχει ως λύση το διάνυσμα (1,1,1).
Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
ggpyr
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1247



View Profile WWW
Re: [C++] 5η Εργασια 2009
« Reply #1 on: November 12, 2009, 12:36:58 pm »

lol???? δεν μας βάζει και τις άλλες 3 τώρα απλά για να τις έχουμε...έλεος για 29/11
Logged

Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
Re: [C++] 5η Εργασια 2009
« Reply #2 on: November 12, 2009, 17:34:37 pm »

Quote from: fel-os on November 12, 2009, 12:36:58 pm
έλεος για 29/11

Ειπε πως δε θα γινουν εργαστηρια αυτη τη βδομαδα που ερχεται (16-20/11) οποτε δεν εχει νοημα να κανουμε ασκηση την αλλη Κυριακη. Tongue
Ειπε και στο μαθημα πως μας αφηνει να ξεκουραστουμε μια βδομαδα. Cheesy
Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
ggpyr
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1247



View Profile WWW
Re: [C++] 5η Εργασια 2009
« Reply #3 on: November 14, 2009, 18:45:40 pm »

Όταν λέει "  Στο λογισμικό να ορίζεται ακόμη μια επικάλυψη γενικής χρήσης του τελεστή *  " τί εννοεί? μπορούμε να έχουμε και επικαλύψεις εκτός κλάσεων που εφαρμόζονατι γενικά? Αν ναι πώς το κάνω...στις σημειώσεις δεν βρήκα κάτι παρόμοιο  Undecided
Logged

Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
Re: [C++] 5η Εργασια 2009
« Reply #4 on: November 15, 2009, 13:00:10 pm »

Ναι οι επικαλυψεις τελεστων λειτουργουν στη main οπως μπορεις να δεις στο παραδειγμα της σελιδας 45 των σημειωσεων.
Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
antonios
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1236



View Profile
Re: [C++] 5η Εργασια 2009
« Reply #5 on: November 15, 2009, 13:19:06 pm »

Quote from: Ευχαριστο Διαλειμμα on November 15, 2009, 13:00:10 pm
Ναι οι επικαλυψεις τελεστων λειτουργουν στη main οπως μπορεις να δεις στο παραδειγμα της σελιδας 45 των σημειωσεων.

standar σελίδα 45?? έψαξα αλλά δεν βρήκα τίποτα.... θυμάμαι μόνο ένα παράδειγμα που μας είχε κάνει σε ένα μάθημα πέρυσι...... αν το έχεις βρει, ρίξ'το ένα post... το κομμάτι με την επικάλυψη μόνο...
Logged
Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
Re: [C++] 5η Εργασια 2009
« Reply #6 on: November 15, 2009, 13:37:35 pm »

Εδω εχει επικαλυψη τελεστων...Επειδη το ειχα μετατρεψει σε pdf μου εβγαζε σελιδα 45...Στο Word ειναι σελιδα 43...

Code:
#include <iostream.h>
class array {
  int a[3];
public:
  array operator+(array t);
  array operator=(array t);
  array operator++(void);
  void out(void);
  void set(int *k);
};
array array::operator+(array t)
{
  array tm;
  int i;
  for(i=0; i<3; i++)
    tm.a[i]=a[i]+t.a[i];
  return tm;
}
array  array::operator=(array t)
{
  int i;
  for(i=0; i<3; i++)
    a[i]=t.a[i];
  return *this;
}
array array::operator++(void)
{
  int i;
  for(i=0; i<3; i++)
    a[i]++;
  return *this;
}
void array::out(void)
{
  int i;
  for(i=0; i<3; i++)
    cout <<a[i]<<" ";
  cout <<"\n";
}
void array::set(int *k)
{
  int i;
  for(i=0; i<3; i++)
    a[i]=*(k+i);
}
 

void main()
{
  array w,r,u;
  int k[]={1,2,3},m[]={10,20,30};
  w.set(k);
  r.set(m);
  u=r+w;
  u.out();
  u=w+r+u;
  u.out();
  u=r=w;
  u.out();
  u++;
  u.out();
  ++u;
  u.out();
}

Edit: Προσεξα τη λεξη "γενικα" μολις.  Shocked
Δηλαδη ασχετα με το ειδος των μεταβλητων/αντικειμενων που χρησιμοποιουνται στην πραξη; Αν ειναι ετσι το πραμα ειμαι FAIL! Tongue

Edit2: Α, οκ μολις ειδα το τμημα της εκφωνησης...Δεν ειμαι fail. Tongue
« Last Edit: November 15, 2009, 13:42:11 pm by Ευχαριστο Διαλειμμα » Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
antonios
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1236



View Profile
Re: [C++] 5η Εργασια 2009
« Reply #7 on: November 15, 2009, 13:45:48 pm »

υπάρχει κανένα παράδειγμα με επικάλυψη τελεστή εκτός κλάσης??
 ουσιαστικά να αναφέρεται στην main....
νομίζω στις σημειώσεις δεν υπάρχει κάτι τέτοιο... μόνο στα μαθήματα αν είπαν κάτι τέτοιο...
Logged
Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
Re: [C++] 5η Εργασια 2009
« Reply #8 on: November 15, 2009, 13:55:46 pm »

Η επικαλυψη οριζεται στην κλασης, ομως στο παραδειγμα που εβαλα οι πραξεις με τους τελεστες γινονται στη main. Τι ακριβως εχω λαθος;;; Tongue
Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
antonios
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1236



View Profile
Re: [C++] 5η Εργασια 2009
« Reply #9 on: November 15, 2009, 14:01:36 pm »

νομίζω ότι πρέπει να γίνει κανονικά ορισμός όπως είναι π.χ. το

array array::operator*(array a), παρόμοια πρέπει να οριστεί χωρίς να έχει σχέση με την κλάσση array.... απλά ήξερα ότι πρέπει να γίνει φιλική στις 2 άλλες κλάσεις.... εδώ μας ζητάει μία τσαχπινιά..... Grin
Logged
ggpyr
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1247



View Profile WWW
Re: [C++] 5η Εργασια 2009
« Reply #10 on: November 15, 2009, 15:09:27 pm »

μα δεν γίνεται να έχουμε επικάλυψη του τελεστή * με friendly συναρτήσεις στην συγκεκριμένη άσκηση αφού υπάρχει ήδη μία απικάλυψη του * στη vector  Huh

Εγώ θα την κάνω για την matrix αφού θέλει το πρώτο όρισμα να είναι στοιχείο matrix και ας με το πάρει λάθος
Logged

antonios
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1236



View Profile
Re: [C++] 5η Εργασια 2009
« Reply #11 on: November 15, 2009, 15:15:56 pm »

Quote from: fel-os on November 15, 2009, 15:09:27 pm
μα δεν γίνεται να έχουμε επικάλυψη του τελεστή * με friendly συναρτήσεις στην συγκεκριμένη άσκηση αφού υπάρχει ήδη μία απικάλυψη του * στη vector  Huh

Εγώ θα την κάνω για την matrix αφού θέλει το πρώτο όρισμα να είναι στοιχείο matrix και ας με το πάρει λάθος

προφανώς θα υπάρχει μία λύση , αλλά κλασικά ο Κορτέσης θέλει κάτι διαφορετικό.......
Logged
Ευχαριστο Διαλειμμα
Αbsolute ΤΗΜΜΥ.gr
*******
Gender: Male
Posts: 4721


ƸӜƷ


View Profile
Re: [C++] 5η Εργασια 2009
« Reply #12 on: November 15, 2009, 15:34:35 pm »

Γινεται να εχεις δυο επικαλυψεις του ιδιου τελεστη αρκει να εχει διαφορετικα ορισματα ή να οριζεται σε διαφορετικες κλασεις.

Quote
β) Μία επικάλυψη του τελεστή * τέτοια ώστε η έκφραση v*d  όπου v και d αντικείμενα τύπου vector

Quote
Στο λογισμικό να ορίζεται ακόμη μια επικάλυψη γενικής χρήσης του τελεστή * τέτοια ώστε η έκφραση a*x όπου a αντικείμενο τύπου matrix και x αντικείμενο τύπου vector

Αν την πρωτη την ορισεις μεσα στην κλαση vector δεχεται ενα ορισμα τυπου vector (και αριστερα του τελεστη ειναι παλι τυπου vector αφου οριστηκε μεσα στην κλαση vector) ενω τη δευτερη την οριζεις στην κλαση matrix και δεχεται ενα ορισμα τυπου vector (αριστερα του τελεστη ειναι τυπου matrix ομως αφου οριστηκε μεσα στην κλαση matrix).
Logged

Καρβουνε αμα σε πιασω στα χερια μου καηκες. Cheesy Cheesy Cheesy
ggpyr
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1247



View Profile WWW
Re: [C++] 5η Εργασια 2009
« Reply #13 on: November 15, 2009, 15:42:16 pm »

Μα αυτό λέω να κάνω (δηλαδή το έκανα τώρα) αλλά αυτός δεν το θέλει αυτό αφού λέει η επικάλυψη αυτή να είναι γενική και επίσης γράφει

"   Σημείωση: Η συνάρτηση επικάλυψης του τελεστή *  για γενική χρήση να μην οριστεί ως φιλική στις κλάσεις matrix και vector.  "
Logged

ggpyr
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1247



View Profile WWW
Re: [C++] 5η Εργασια 2009
« Reply #14 on: November 15, 2009, 15:59:56 pm »

Στη σχέση z=(b-a*x+d*x)/d τί βάζουμε ως x διάνυσμα? αφού είναι το διάνυσμα [x1,x2,..,xn] δηλαδή οι άγνωστοι...όμως το z θα πρέπει να έχει αριθμούς ως στοιχεία ώς προσέγγιση του x Μήπως βάζουμε για την πρώτη επανάληψη τυχαίο διάνυσμα x και μετά θέτουμε στις υπόλοιπες z=x???  Undecided Undecided Undecided
Logged

Pages: [1] 2 3 ... 6 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...