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

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 18, 2025, 01:30:02 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[Today at 00:45:33]

[Μεταφορά και Διανομή ΗΕ]...
by Nikos_313
[Today at 00:10:29]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 17, 2025, 21:32:50 pm]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[June 17, 2025, 21:25:42 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[June 17, 2025, 20:59:13 pm]

[Γραφική] Λυμένα θέματα
by okanpala
[June 17, 2025, 18:56:22 pm]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[June 17, 2025, 14:25:00 pm]

Αντικατάστασης πυκνωτή σε...
by george14
[June 17, 2025, 13:58:20 pm]

Πότε θα βγει το μάθημα; -...
by tzortzis
[June 17, 2025, 13:19:53 pm]

Αποτελέσματα Εξεταστικής ...
by george14
[June 17, 2025, 12:08:25 pm]

[ΨEE] Γενικές απορίες και...
by Juror8
[June 17, 2025, 12:06:57 pm]

[Οργάνωση Υπολογιστών] Γε...
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]
Στατιστικά
Members
Total Members: 9961
Latest: Poli
Stats
Total Posts: 1426704
Total Topics: 31710
Online Today: 205
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 37
Guests: 152
Total: 189
ZontanosThrylos
evitzv
Spyridon01101
Tsn
athena_apo
Giannis Masterio
miltan8
marwt
ismini.h
thpanousis
Elenit
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
tinidou
Theislander
thomasdt
stelinas
Stelios V.
tasos gourd
Captain
rafail zisiadis
kakousios
aplos paratiritis
GeorgeGk
asimomyti
Mr Watson
maestros
babistso
Aria10
Kelly Tsimpouri
stavr0s16
nikpapoutsi
ThanosV
chriskazakos
Εμφάνιση

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

Νέα!
Για ανανέωση (ή προσθήκη νέου) avatar, πρέπει η μεγαλύτερη διάσταση της εικόνας να είναι 110 pixels.
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 10329 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...