• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 18, 2025, 08:36:58 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, 08:36:58 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
[Μεταφορά και Διανομή ΗΕ]...
by tzortzis
[Today at 07:55:05]

Αποτελέσματα Εξεταστικής ...
by Mr Watson
[Today at 03:15:54]

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

Ισραήλ - Ιράν: Πόλεμος στ...
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]

[Ψ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: 1426706
Total Topics: 31710
Online Today: 215
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 32
Guests: 103
Total: 135
Pcsc
vaspetr
pavlaras
Stelios V.
Yamal
jimalexoud
pipitsenko
andreas2000
George_RT
chriskazakos
dkoukn
panpapachri
dkatsoul
apob
vaggos
Jimlam
cheefler
nikpamp
tzortzis
AcDimitri
JiMan5
stavrosk
papoutsas
alexlemp
fkacori
palladas
nikolakys
smoul
andreassifo
tsakalokagkouras
Εμφάνιση

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

Νέα!
Για ανανέωση (ή προσθήκη νέου) avatar, πρέπει η μεγαλύτερη διάσταση της εικόνας να είναι 110 pixels.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 2ο Εξάμηνο > Αντικειμενοστραφής Προγραμματισμός (Moderators: chatzikys, tzortzis) > [C++] 5η Εργασία 2010
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 Go Down Print
Author Topic: [C++] 5η Εργασία 2010  (Read 2599 times)
nikitas350
Καταξιωμένος/Καταξιωμένη
***
Posts: 201



View Profile
[C++] 5η Εργασία 2010
« on: November 21, 2010, 16:50:20 pm »

Εργασία Ε (Hμ/νία λήξης δηλώσεων: 28/11/2010)

     Με στόχο να δημιουργηθεί μια βιβλιοθήκη η οποία να διαχειρίζεται πράξεις με πίνακες, να γραφεί το λογισμικό στο οποίο να ορίζεται η κλάση array η οποία ως private στοιχεία να διαθέτει τις ακέραιες μεταβλητές n και m και τον pointer σε pointer a σε στοιχεία τύπου float.
     Στο λογισμικό να ορίζονται ακόμη:

α)  Μια επικάλυψη του τελεστή ( ) τέτοια ώστε η έκφραση ar(r,c), όπου ar αντικείμενο τύπου array και r και c τιμές τύπου int, να δεσμεύει
     δυναμικά μνήμη, χρησιμοποιώντας τον pointer a, για την καταχώρηση ενός πίνακα με r γραμμές και c στήλες θέτοντας ταυτόχρονα
     n=r και m=c. Η επικάλυψη να επιστρέφει το αντικείμενο ar.
b)  Μια επικάλυψη του τελεστή ~ τέτοια ώστε η έκφραση ~ar, όπου ar αντικείμενο τύπου array, να επιστρέφει ένα αντικείμενο του ιδίου
     τύπου στο οποίο ο πίνακας που ορίζεται να είναι ο ανάστροφος του πίνακα που ορίζει το αντικείμενο ar.
γ)  Μια επικάλυψη του τελεστή * τέτοια ώστε η έκφραση ar*ap, όπου ar και ap αντικείμενα τύπου array, να επιστρέφει ένα αντικείμενο του
     ιδίου τύπου στο οποίο ο πίνακας που ορίζεται να περιέχει το γινόμενο των πινάκων που ορίζουν τα αντικείμενα ar και ap. Η συνάρτηση
     επικάλυψης να ελέγχει αν είναι δυνατή η πράξη του πολλαπλασιασμού για τους συγκεκριμένους πίνακες.
δ)  Μια επικάλυψη του τελεστή = τέτοια ώστε η έκφραση ar=ap, όπου ar και ap αντικείμενα τύπου array, να καταχωρεί στον πίνακα που
     ορίζει το αντικείμενο ar τα στοιχεία του πίνακα που ορίζει το αντικείμενο ap. Η συνάρτηση επικάλυψης να ελέγχει αν είναι δυνατή η
     καταχώρηση. Τέλος η συνάρτηση επικάλυψης να επιστρέφει το αντικείμενο ar.
ε)  Μια επικάλυψη του τελεστή ++ τέτοια ώστε η έκφραση ++ar όπου ar αντικείμενο τύπου array να διαβάζει και να καταχωρεί τις τιμές
     των στοιχείων του πίνακα που ορίζει το αντικείμενο ar.
ζ)  Μια επικάλυψη του τελεστή ! τέτοια ώστε η έκφραση !ar, όπου ar αντικείμενο τύπου array, να εκτυπώνει τα στοιχεία του πίνακα που
     ορίζει το αντικείμενο ar.
η)  Μια επικάλυψη του τελεστή << τέτοια ώστε η έκφραση p<<ar, όπου p ένας pointer σε pointer σε στοιχεία τύπου float και ar αντικείμενο
     τύπου array, αφού δεσμεύσει δυναμικά την κατάλληλη μνήμη χρησιμοποιώντας τον pointer p, να καταχωρεί στον πίνακα που
     δημιουργήθηκε τα στοιχεία του πίνακα που ορίζει το αντικείμενο ar. Ως επιστρεφόμενη τιμή για τη συνάρτηση επικάλυψης να είναι ο
     τύπος void.

     Στο λογισμικό να οριστεί ακόμη η συνάρτηση void make_pos η οποία να δέχεται ως όρισμα έναν πίνακα δύο διαστάσεων στον οποίο να αντικαθιστά τα στοιχεία του που είναι αρνητικά με τις απόλυτες τιμές τους.

     Η συνάρτηση main του προγράμματος να ορίζει τα αντικείμενα a και b τύπου array και τον pointer σε pointer p σε στοιχεία τύπου float. Το πρόγραμμα να διαβάζει τις τιμές των n και m για το αντικείμενο a και χρησιμοποιώντας της επικαλύψεις που ορίστηκαν, να δημιουργεί τον αντίστοιχο πίνακα για το αντικείμενο a και να διαβάζει τις τιμές αυτού του πίνακα. Στη συνέχεια, αφού καταχωρίσει το αντικείμενο που επιστρέφει η έκφραση a*(~a) ως τιμή για το αντικείμενο b, να χρησιμοποιεί την έκφραση p<<b για να δημιουργήσει τον πίνακα p και να καταχωρίσει σε αυτόν τα στοιχεία του πίνακα που ορίζει το αντικείμενο b. Τέλος αφού κληθεί η συνάρτηση make_pos για τον πίνακα p, να εκτυπώνεται ο πίνακας p που θα προκύψει μετά την κλήση της συνάρτησης καθώς και ο πίνακας που όρισε το αντικείμενο b. Με το τέλος του προγράμματος να απελευθερώνεται η όποια μνήμη δεσμεύτηκε δυναμικά.

     Σημείωση: Εφόσον είναι δυνατόν οι συναρτήσεις επικάλυψης να οριστούν ως μέλη της κλάσης στην οποία ανήκουν τα αντίστοιχα
     αντικείμενα.    
« Last Edit: December 04, 2010, 22:23:14 pm by nikitas350 » Logged
Groucho
Veteran
Εθισμένος στο ΤΗΜΜΥ.gr
******
Posts: 879



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #1 on: November 23, 2010, 22:49:05 pm »

η ηλιθιοτερη εργασια ολων των εποχων!!!
Logged
Room
Νεούλης/Νεούλα
*
Posts: 47


View Profile
Re: [C++] 5η Εργασία 2010
« Reply #2 on: November 24, 2010, 00:17:44 am »

Γιατί έτσι;
Logged
Orfikoss
Veteran
Θαμώνας
******
Gender: Male
Posts: 357



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #3 on: November 24, 2010, 01:36:33 am »

μεγάλη κουβάντα...
Logged

mafalda
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Female
Posts: 1427



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #4 on: November 26, 2010, 20:00:24 pm »

Πώς θα επιστραφεί ο πίνακας στο p στην main,αφού ο operator<< πρέπει να είναι void;
Logged
sabpap
Νεούλης/Νεούλα
*
Posts: 30



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #5 on: November 27, 2010, 13:59:31 pm »

Quote from: mafalda on November 26, 2010, 20:00:24 pm
Πώς θα επιστραφεί ο πίνακας στο p στην main,αφού ο operator<< πρέπει να είναι void;

Για να επιστραφει ο πινακας p  νομιζω πως δηλωνεις τη συναρτηση ως εξης:  friend void operator<<(float **&p,array ar);
Logged
The Stig
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1230


Είμαστε άρρωστοι και είναι πια αργά...


View Profile WWW
Re: [C++] 5η Εργασία 2010
« Reply #6 on: November 27, 2010, 19:50:28 pm »

Πολλαπλασιασμό εννοεί το matrix product ή elementary-wise??
Logged

http://www.youtube.com/watch?v=_nK8DoV8FJE

Η φλόγα καίει εδώ και καιρό σε γήπεδα και δρόμους... Τώρα όμως φούντωσε και θα σας κάψει όλους.
Τσαμπίκα
Θαμώνας
****
Gender: Female
Posts: 366



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #7 on: November 28, 2010, 22:57:25 pm »

Στη συνάρτηση free θέλω να ελευθερώσω τη μνήμη που καταλαμβάνει
ο πίνακας που ορίζει το αντικείμενο α.Όμως βάζω free(a); και εμφανίζει error.Ξέρει κάποιος τι μπορώ να κάνω?
Logged

"...διότι οι άνθρωποι δε συγχωρούν αυτούς που από έρωτα εκπέσανε"
Αργύρης Μπακιρτζής
proud_metalhead
Guest
Re: [C++] 5η Εργασία 2010
« Reply #8 on: November 29, 2010, 00:31:08 am »

Quote from: vasia sivota on November 28, 2010, 22:57:25 pm
Στη συνάρτηση free θέλω να ελευθερώσω τη μνήμη που καταλαμβάνει
ο πίνακας που ορίζει το αντικείμενο α.Όμως βάζω free(a); και εμφανίζει error.Ξέρει κάποιος τι μπορώ να κάνω?
επειδη ο πινακας ειναι δισδιαστατος πρεπει πρωτα να κανεις μια for μεσα στην οποια ελευθερωνεις τισ στηλες και μετα να κανεις την τελικη free

Code:
for(i=0; i<c; i++)
{
free a[i];
}
free (a);
οπου c ο αριθμος των στηλων
καπως ετσι
Logged
Tius
Ανερχόμενος/Ανερχόμενη
**
Posts: 97



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #9 on: December 01, 2010, 22:49:05 pm »

Quote from: sabpap on November 27, 2010, 13:59:31 pm
Quote from: mafalda on November 26, 2010, 20:00:24 pm
Πώς θα επιστραφεί ο πίνακας στο p στην main,αφού ο operator<< πρέπει να είναι void;

Για να επιστραφει ο πινακας p  νομιζω πως δηλωνεις τη συναρτηση ως εξης:  friend void operator<<(float **&p,array ar);

Kanonika einai xoris to & giati i p einai idi pointer se pointer alla doulebei kai etsi (dokimasmeno se compiler dev c++).
Logged
nikitas350
Καταξιωμένος/Καταξιωμένη
***
Posts: 201



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #10 on: December 02, 2010, 17:38:31 pm »

Quote from: Tius on December 01, 2010, 22:49:05 pm
Quote from: sabpap on November 27, 2010, 13:59:31 pm
Quote from: mafalda on November 26, 2010, 20:00:24 pm
Πώς θα επιστραφεί ο πίνακας στο p στην main,αφού ο operator<< πρέπει να είναι void;

Για να επιστραφει ο πινακας p  νομιζω πως δηλωνεις τη συναρτηση ως εξης:  friend void operator<<(float **&p,array ar);

Kanonika einai xoris to & giati i p einai idi pointer se pointer alla doulebei kai etsi (dokimasmeno se compiler dev c++).

Αν το φέρεις χωρίς το & πρέπει να έχεις κάνει την δέσμευση μνήμης για το p στην main, γιατί ουσιαστικά φέρνεις ένα αντίγραφο του διπλού pointer...
Logged
varvoutis
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 746


http://www.nietzsche-quotes.com/


View Profile
Re: [C++] 5η Εργασία 2010
« Reply #11 on: January 24, 2011, 20:36:48 pm »

Καλησπερα παδια,

προσπαθωντας να τρεξω τη λυση της φετινης εργασίας Ε, μου χτυπησε ο compiler ( Xcode Version 3.2.5 64-bit ) ( Mac OS X Version 10.6.6 ) στη γραμμη

b=a*(~a);

με μηνυμα

no match for 'operator*' in 'a * a. array::operator~()'

Η λυση ειναι των διδασκοντων. Ξερει κανεις τι παιζει και γιατι χτυπαει;

Ευχαριστω



Logged

Τι θα γίνει Μπόκολη;
nikitas350
Καταξιωμένος/Καταξιωμένη
***
Posts: 201



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #12 on: January 25, 2011, 03:31:02 am »

Quote from: varvoutis on January 24, 2011, 20:36:48 pm
Καλησπερα παδια,

προσπαθωντας να τρεξω τη λυση της φετινης εργασίας Ε, μου χτυπησε ο compiler ( Xcode Version 3.2.5 64-bit ) ( Mac OS X Version 10.6.6 ) στη γραμμη

b=a*(~a);

με μηνυμα

no match for 'operator*' in 'a * a. array::operator~()'

Η λυση ειναι των διδασκοντων. Ξερει κανεις τι παιζει και γιατι χτυπαει;

Ευχαριστω


Χτυπάει επειδή καλείς μια επικάλυψη (η οποία δέχεται όρισμα array&) με όρισμα ένα temporary αντικείμενο (τα οποία είναι const). Αυτό μπορεί να οδηγήσει σε error ή warning (ανάλογα με τον compiler). Για να το διορθώσεις αλλάζεις τις παρακάτω γραμμές ως εξής:

Γραμμή 11: array operator*(const array &b);
Γραμμή 12: array operator=(const array &b);
Γραμμή 51: array array::operator*(const array &b)
Γραμμή 69: array array::operator*(const array &b)
Logged
varvoutis
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 746


http://www.nietzsche-quotes.com/


View Profile
Re: [C++] 5η Εργασία 2010
« Reply #13 on: January 25, 2011, 13:09:43 pm »

Ευχαριστω Νικητα, ειχες δικιο! Μπορεις μηπως να μου πεις κι ολας πού να ανατρεξω στο βιβλιο ή εστω στις σημειωσεις του Κορτεση για να ξεδιαλυνω αυτο το λεπτο σημειο;

Ευχαριστω  Wink
Logged

Τι θα γίνει Μπόκολη;
nikitas350
Καταξιωμένος/Καταξιωμένη
***
Posts: 201



View Profile
Re: [C++] 5η Εργασία 2010
« Reply #14 on: January 25, 2011, 13:31:49 pm »

Στις σημειώσεις δεν λέει πουθενά για const. Στο βιβλίο έχει κάποια διάσπαρτα κομμάτια. Ούτως ή άλλως δεν έχουμε πει στην τάξη για const οπότε είναι εκτός. Κατά τα άλλα μπορείς να δείς εδώ http://www.linuxtopia.org/online_books/programming_books/thinking_in_c++/Chapter08_015.html
και πιο γενικά όλο αυτό:
http://www.linuxtopia.org/online_books/programming_books/thinking_in_c++/Chapter08.html
Logged
Pages: [1] 2 Go Up Print
Jump to:  

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