• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 23:41:21 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, 23:41:21 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: 62
Guests: 147
Total: 209
Grigorisioan05
thomasdt
odkoutrolikos
Annapar
vaggelisx
PrincessConsuela
chaniotism
varvoutis
Stelios V.
ThanosV
sassi
athena_apo
Aglosdoum
dimopoul
stavr0s16
chrysa.tsilika
natavhoo
gprok
dorapangeiou
soule
tasos potsakis
Cersei Tsoulannister
soph553
Fovidis
DarkMagiK06
Dimos Bachlas
stelinas
MrGreekArrow
andyy
ppoug
sigklitiki
Aris★
kpapama
gpr000
spoun
dimitrisblioumis
dimchin
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
smanio
amprozos
soktas
valentini
nchatzo
tzesi
tzortzis
cheinopor
fkaravi
Kyritsisss
tasos_ntv
palladas
theofr
andrpats
victoria
miltan8
jimalexoud
Born_Confused
Juror8
dr.giorgos
Εμφάνιση

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

Νέα!
Για αλλαγή του public name σας, επικοινωνήστε με έναν από τους Admins.
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 2585 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...