THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: vasilis94 on November 17, 2014, 10:52:10 am



Title: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: vasilis94 on November 17, 2014, 10:52:10 am
Άσκηση D

         Για την επίλυση ενός συστήματος γραμμικών εξισώσεων a*x=b, όπου a τετραγωνικός πίνακας, x το διάνυσμα των αγνώστων και  b το διάνυσμα των σταθερών όρων,  μπορεί να εφαρμοστεί ένας επαναληπτικός αλγόριθμος ο οποίος υλοποιείται από τη σχέση  xi+1=(b-a*xi+d*xi)/d , όπου d το διάνυσμα που έχει ως συνιστώσες τα διαγώνια στοιχεία του πίνακα a. Η εφαρμογή του αλγορίθμου δημιουργεί μια ακολουθία διανυσμάτων xν η οποία τείνει στη λύση του συστήματος. Η σύγκληση του αλγορίθμου δεν είναι εξασφαλισμένη σε κάθε περίπτωση. Ικανή συνθήκη για τη σύγκληση είναι ο πίνακας των συντελεστών να είναι διαγωνίως υπερτερών. Αυτό σημαίνει ότι για κάθε διαγώνιο στοιχείο του πίνακα πρέπει να ισχύει η σχέση 
│ai,i│>∑│ai,j│j=1,…,n, j≠i (σχέση 1) ή η σχέση │ai,i│>∑│ai,j│ i=1,…n, i≠j(σχέση 2).

        Για να ελεγχθεί αν ένας τετραγωνικός πίνακας είναι διαγωνίως υπερτερών να γραφεί το λογισμικό στο οποίο να ορίζονται
1) Η κλάση matrix η οποία ως private στοιχεία να ορίζει έναν pointer σε pointer σε στοιχεία τύπου float και την ακέραια μεταβλητή n. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να χρησιμοποιείται, ως όρισμα, σε μία συνάρτηση αρχικών συνθηκών, η τιμή της n, να χρησιμοποιείται ο pointer για να δεσμευτεί δυναμικά μνήμη για έναν τετραγωνικό πίνακα τύπου nxn  και να διαβάζονται τα στοιχεία του πίνακα.
2) Η κλάση vector η οποία ως private στοιχεία να ορίζει έναν pointer για στοιχεία τύπου float και την ακέραια μεταβλητή n. Με τη δημιουργία αντικειμένων στον τύπο της κλάσης να χρησιμοποιείται, ως όρισμα σε μία συνάρτηση αρχικών συνθηκών, η τιμή της n και να χρησιμοποιείται ο pointer για να δεσμευτεί δυναμικά μνήμη για έναν πίνακα με n στοιχεία
Η κλάση matrix να διαθέτει ακόμη
α) Μία επικάλυψη του τελεστή [ ] τέτοια ώστε η έκφραση a[i ][j], όπου a αντικείμενο στον τύπο της κλάσης, να επιστρέφει το στοιχείο βρίσκεται στην i γραμμή και στην j στήλη του πίνακα που όρισε το αντικείμενο.
β) Μία επικάλυψη του τελεστή ! τέτοια ώστε η έκφραση !a, όπου a αντικείμενο στον τύπο της κλάσης να επιστρέφει ένα αντικείμενο τύπου vector για το οποίο στην i θέση του πίνακα να έχει καταχωρηθεί το άθροισμα των απολύτων τιμών των στοιχείων της i γραμμής του πίνακα που όρισε το αντικείμενο a τα οποία δεν βρίσκονται στην διαγώνιο.
γ) Μία επικάλυψη του τελεστή ~ τέτοια ώστε η έκφραση ~a όπου a αντικείμενο στον τύπο της κλάσης να επιστρέφει ένα αντικείμενο τύπου vector για το οποίο στην j θέση του πίνακα να έχει καταχωρηθεί το άθροισμα των απολύτων τιμών των στοιχείων της j στήλης του πίνακα που όρισε το αντικείμενο a τα οποία δεν βρίσκονται στην διαγώνιο.
Η κλάση vector να διαθέτει ακόμη
α) Μία επικάλυψη του τελεστή > τέτοια ώστε η έκφραση v>w, όπου v και w αντικείμενα στον τύπο της κλάσης,  να επιστρέφει μια μη μηδενική τιμή αν κάθε στοιχείο του πίνακα που όρισε το αντικείμενο v είναι μεγαλύτερο από τo αντίστοιχο στοιχείο του πίνακα που όρισε το αντικείμενο w.
 β) Μία επικάλυψη του τελεστή = τέτοια ώστε η έκφραση v = a όπου v αντικείμενο στον τύπο της κλάσης και a αντικείμενο τύπου matrix να καταχωρεί ως στοιχεία για τον πίνακα που όρισε το αντικείμενο v τις απόλυτες τιμές των διαγώνιων στοιχείων του πίνακα που ορίζει το αντικείμενο a.
γ) Μία επικάλυψη του τελεστή - τέτοια ώστε η έκφραση v-w, όπου v και w αντικείμενα στον τύπο της κλάσης,  να επιστρέφει ένα αντικείμενο τύπου vector για το οποίο ο πίνακας που ορίζει να έχει ως στοιχεία τις διαφορές των αντίστοιχων στοιχείων των πινάκων που ορίζουν τα αντικείμενα v και w.
δ) Μία επικάλυψη του τελεστή ++ τέτοια ώστε η έκφραση ++v, όπου v αντικείμενο στον τύπο της κλάσης, να επιστρέφει το άθροισμα των στοιχείων του πίνακα που ορίζει το αντικείμενο v.

          Η συνάρτηση main του προγράμματος να ορίζει ένα αντικείμενο a στον τύπο matrix και χρησιμοποιώντας της επικαλύψεις που ορίστηκαν στις κλάσεις matrix και vector να ελέγχει αν ο πίνακας που όρισε το αντικείμενο a είναι διαγωνίως υπερτερών. Το πρόγραμμα, για αυτόν το σκοπό, να ελέγχει αν για το αντικείμενο a ισχύει για όλες τις γραμμές του πίνακα η σχέση 1 ή αν ισχύει για όλες τις στήλες του πίνακα η σχέση 2. Αν ο πίνακας διαπιστωθεί ότι είναι διαγωνίως υπερτερών να τυπώνονται οι διαφορές των απολύτων τιμών των διαγώνιων στοιχείων του πίνακα από τα αντίστοιχα αθροίσματα των απολύτων τιμών των υπολοίπων στοιχείων των γραμμών ή των στηλών του πίνακα. Τέλος να εκτυπώνεται το άθροισμα αυτών των διαφορών.


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 19, 2014, 21:42:32 pm
Στην πρώτη επικάλυψη του πίνακα matrix,ζητάει κάτι τέτοιο;


float matrix::operator[](matrix a,int i,int j){
   float num;
   num=a[j];
   return num;
}

και γω εκει εχω κολλησει  :???:
 το a ειναι τυπου matrix, γινεται να το αντιστοιχεις με το num που ειναι float ?
ως friend δηλωνεις την πρωτη επικαλυψη, ετσι?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: K on November 19, 2014, 23:57:43 pm
Στην πρώτη επικάλυψη του πίνακα matrix,ζητάει κάτι τέτοιο;


float matrix::operator[](matrix a,int i,int j){
   float num;
   num=a[j];
   return num;
}

και γω εκει εχω κολλησει  :???:
 το a ειναι τυπου matrix, γινεται να το αντιστοιχεις με το num που ειναι float ?
ως friend δηλωνεις την πρωτη επικαλυψη, ετσι?

Γιατί friend ρε συ?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: tsarachaf on November 20, 2014, 05:05:43 am
Στην πρώτη επικάλυψη του πίνακα matrix,ζητάει κάτι τέτοιο;


float matrix::operator[](matrix a,int i,int j){
   float num;
   num=a[j];
   return num;
}

και γω εκει εχω κολλησει  :???:
 το a ειναι τυπου matrix, γινεται να το αντιστοιχεις με το num που ειναι float ?
ως friend δηλωνεις την πρωτη επικαλυψη, ετσι?

Δεν μπορείς να το κάνεις να επιστρέφει κατευθείαν το (i,j) στοιχείο, γιατί χρειάζεσαι 3 ορίσματα και ο τελεστής παίρνει μόνο δύο. Επίσης δεν χρειάζεται να βάλεις σαν όρισμα το αντικείμενο, γιατί σαν συναρτησή μέλους(που δεν μπορεί να μην είναι) έχει πρόσβαση στο αντικείμενο (αλλά μετράει σαν όρισμα του τελεστή).
Μπορείς να το κάνεις να επιστρέφει αναφορά (float &operator[]), νομίζω ότι αυτό αρκεί. Τουλάχιστον εγώ αυτό έκανα.


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Napoleon on November 20, 2014, 12:20:15 pm
επειδή ο a είναι pointer σε pointer σημαίνει ότι είναι μονοδιάστατος πίνακας με  i στοιχεία,όπου κάθε στοιχείο είναι μονοδιάστατος πίνακας με j στοιχεία.Άρα μπορείς να το κάνεις έτσι:
Code:
float *matrix::operator[](int k)
{ return a[k];}


που σημαίνει ότι όταν θα γράψεις a [ i ]  [ j ],θα τρέξει η συνάρτηση για το [ i ] στον πίνακα a,θα επιστρέψει τον πίνακα στη θέση i και για αυτόν τον πίνακα θα τρέξει το  [j] και θα επιστρέψει το στοιχείο στη θέση j


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: K on November 20, 2014, 15:37:49 pm
επειδή ο a είναι pointer σε pointer σημαίνει ότι είναι μονοδιάστατος πίνακας με  i στοιχεία,όπου κάθε στοιχείο είναι μονοδιάστατος πίνακας με j στοιχεία.Άρα μπορείς να το κάνεις έτσι:
Code:
float *matrix::operator[](int k)
{ return a[k];}


που σημαίνει ότι όταν θα γράψεις a [ i ]  [ j ],θα τρέξει η συνάρτηση για το [ i ] στον πίνακα a,θα επιστρέψει τον πίνακα στη θέση i και για αυτόν τον πίνακα θα τρέξει το  [j] και θα επιστρέψει το στοιχείο στη θέση j
μήπως εννοείς αυτό?
float* matrix::operator[](int k)
{ return a[k];}


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Napoleon on November 20, 2014, 16:49:35 pm
επειδή ο a είναι pointer σε pointer σημαίνει ότι είναι μονοδιάστατος πίνακας με  i στοιχεία,όπου κάθε στοιχείο είναι μονοδιάστατος πίνακας με j στοιχεία.Άρα μπορείς να το κάνεις έτσι:
Code:
float *matrix::operator[](int k)
{ return a[k];}


που σημαίνει ότι όταν θα γράψεις a [ i ]  [ j ],θα τρέξει η συνάρτηση για το [ i ] στον πίνακα a,θα επιστρέψει τον πίνακα στη θέση i και για αυτόν τον πίνακα θα τρέξει το  [j] και θα επιστρέψει το στοιχείο στη θέση j
μήπως εννοείς αυτό?
float* matrix::operator[](int k)
{ return a[k];}

εννοείς το αστεράκι αν είναι στη λέξη float ή στη λέξη matrix?Αν ναι,δεν έχει σχέση


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: kdespoik on November 21, 2014, 14:17:40 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 21, 2014, 15:58:14 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 21, 2014, 17:26:51 pm
Στην πρώτη επικάλυψη του πίνακα matrix,ζητάει κάτι τέτοιο;


float matrix::operator[](matrix a,int i,int j){
   float num;
   num=a[j];
   return num;
}

και γω εκει εχω κολλησει  :???:
 το a ειναι τυπου matrix, γινεται να το αντιστοιχεις με το num που ειναι float ?
ως friend δηλωνεις την πρωτη επικαλυψη, ετσι?

Γιατί friend ρε συ?
Ναι βλακεια ειχα πει, δεν χρειαζεται friend  ;)
μπορει καποιος να εξηγησει γιατι η επικαλυψη [] επιστρεφει float* ?  :???:


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: K on November 21, 2014, 21:35:20 pm
Στην πρώτη επικάλυψη του πίνακα matrix,ζητάει κάτι τέτοιο;


float matrix::operator[](matrix a,int i,int j){
   float num;
   num=a[j];
   return num;
}

και γω εκει εχω κολλησει  :???:
 το a ειναι τυπου matrix, γινεται να το αντιστοιχεις με το num που ειναι float ?
ως friend δηλωνεις την πρωτη επικαλυψη, ετσι?

Γιατί friend ρε συ?
Ναι βλακεια ειχα πει, δεν χρειαζεται friend  ;)
μπορει καποιος να εξηγησει γιατι η επικαλυψη [] επιστρεφει float* ?  :???:

5 ευρουλάκια Κοσμά μου


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: TheHound on November 21, 2014, 22:18:32 pm
απ' ότι βλέπω άλλαξε ελαφρώς η εκφώνηση... Επίσης για κάποιο λόγο διαφορετική είναι η εκφώνηση που έχει στην ενότητα εργασίες και διαφορετική αυτή που είναι στο υλικό μαθήματος. Τι παίζει?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Fedra on November 22, 2014, 00:03:42 am
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...

Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: K on November 22, 2014, 13:39:20 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...

Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


Είσαι σίγουρος/η, ότι δήλωσες:
class vector;
class matrix(){
.
.
.
};
class vector(){
.
.
.
.
};


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Napoleon on November 22, 2014, 15:21:32 pm
Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


μήπως έχεις γράψει την συνάρτηση πριν τον constructor της matrix?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Fedra on November 22, 2014, 17:01:28 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...

Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


Είσαι σίγουρος/η, ότι δήλωσες:
class vector;
class matrix(){
.
.
.
};
class vector(){
.
.
.
.
};



Έχω κάνει:

clas matrix() ;
class vector()
{.
.
.
.
.
.
};

οι συναρτήσεις της vector
.
.
.
.
.
class matrix()
{
.
.
.
.
.
};

οι συναρήσεις της matrix
.
.
.
.
.


Πρέπει να γράψω τις δηλώσεις και των δύο κλάσεων στην αρχή και μετά τους κώδικες των συναρτήσεών τους?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 22, 2014, 18:19:18 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...

Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


Είσαι σίγουρος/η, ότι δήλωσες:
class vector;
class matrix(){
.
.
.
};
class vector(){
.
.
.
.
};



Έχω κάνει:

clas matrix() ;
class vector()
{.
.
.
.
.
.
};

οι συναρτήσεις της vector
.
.
.
.
.
class matrix()
{
.
.
.
.
.
};

οι συναρήσεις της matrix
.
.
.
.
.


Πρέπει να γράψω τις δηλώσεις και των δύο κλάσεων στην αρχή και μετά τους κώδικες των συναρτήσεών τους?

Νομίζω ναι...

Γράψε

class matrix ;

class vector {...};

class matrix {...};

και μετά τις συναρτήσεις


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Fedra on November 22, 2014, 20:09:06 pm
έχετε ιδεα πως θα υλοποιηθει η συναρτηση με επικαλυψη ! και ~.βαζω επιστρεφομενη τιμη vector και δε το δεχεται

Γιατί δεν το δέχεται ; Αν στον κώδικα σου έχεις γράψει πρώτα την class matrix ίσως να πρέπει να βάλεις στην αρχή αρχή του κώδικα την εντολή class vector ; για να ξέρει ο compiler όταν θα δει την δήλωση της επικάλυψης ! ότι υπάρχει ο επιστρεφόμενος τύπος vector ...

Ρε παιδιά και μένα μου βγάζει λάθος. Έχω γράψει πρώτα την κλάση vector και την matrix απλά τη δήλωσα στην αρχή, αλλά στην επικάλυψη του = που βάω σαν όρισμα αντικείμενο τύπου matrix (vector vector::operator=(matrix mat)  μου λέει:
'mat' has incomplete type.

Τι σημαίνει αυτό?  :-\


Είσαι σίγουρος/η, ότι δήλωσες:
class vector;
class matrix(){
.
.
.
};
class vector(){
.
.
.
.
};



Έχω κάνει:

clas matrix() ;
class vector()
{.
.
.
.
.
.
};

οι συναρτήσεις της vector
.
.
.
.
.
class matrix()
{
.
.
.
.
.
};

οι συναρήσεις της matrix
.
.
.
.
.


Πρέπει να γράψω τις δηλώσεις και των δύο κλάσεων στην αρχή και μετά τους κώδικες των συναρτήσεών τους?

Νομίζω ναι...

Γράψε

class matrix ;

class vector {...};

class matrix {...};

και μετά τις συναρτήσεις

Δίκιο έχεις.. Το έκανα και διορθώθηκε αυτό με το incomplete type.Ευχαριστώ.

Άλλη ερώτηση τώρα. Για την επικάλυψη του !. Θέλει να την κάνουμε μέσα στην matrix αλλά να επιστρέφει αντικείμενο τύπου vector. Ορίζω ένα αντικείμενο τύπου vector μέσα στον κώδικα της επικάλυψης για το ! και βάζω στον πίνακα αυτού του αντικειμένου τα αθροίσματα που ζητάει. Μου χτυπάει όμως και λέει πως είναι private ο πίνακας. Πώς γίνεται?

( ο κώδικάς μου )

vector matrix::operator!()
{
   vector vec(n);
   
   for(int i=0; i<n; i++)
   {
      for(int j=0; j<n; j++)
      {
         if(i!=j)
         {
            vec.v+=abs(a[j]);
         }
      }
   }
   return vec;
}


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 22, 2014, 20:18:49 pm
Κάνε μία συνάρτηση στην vector:

 void setv(float f,int i){ v [ i ]=f;}

και χρησιμοποίησε την στην επικάλυψη !

Άντε μην τεμπελιάζεις  8))


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 22, 2014, 20:20:04 pm
και με friend συναρτηση δεν θα μπορουσε να φυγει το error?
Μεσα στη main θελω να χρησιμοποιησω τον πινακα vec της κλασης vector για τα αντικειμενα τυπου vector αλλα ειναι private και δεν μπορω.
Γραφω δηλαδη v1.vec αλλα δεν γινεται. τι κανω για αυτο?  :-\


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 22, 2014, 20:21:27 pm
και με friend συναρτηση δεν θα μπορουσε να φυγει το error?

The noob way ...


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: kdespoik on November 23, 2014, 20:07:58 pm
Κάνε μία συνάρτηση στην vector:

 void setv(float f,int i){ v [ i ]=f;}

και χρησιμοποίησε την στην επικάλυψη !

Άντε μην τεμπελιάζεις  8))

οπου f?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 23, 2014, 20:19:03 pm
οπου f?

Το άθροισμα της στήλης ή γραμμής ;  Αυτό που υλοποιεί η επικάλυψη του !


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: kdespoik on November 23, 2014, 20:22:57 pm
οπου f?

Το άθροισμα της στήλης ή γραμμής ;  Αυτό που υλοποιεί η επικάλυψη του !

άρα κατι τετοιο?

vector matrix::operator~(){
   vector vect(n);
   float sum;
   for(int j=0;j<n;j++){
      sum=0;
      for (int i=0;i<n;i++){
      if(i!=j) vect.setv(sum,i)=vect.setv(sum,i)+ abs(A);
    }
    }
   return vect;
}


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 23, 2014, 20:28:13 pm
εν τω μεταξυ αλλη εκφωνηση εχει στο eThmmy, αλλη στο AskisiD.doc και αλλη ηταν παλια στο AskisiD.doc
 ^wav^


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: ablaoublas on November 23, 2014, 20:41:50 pm
εν τω μεταξυ αλλη εκφωνηση εχει στο eThmmy, αλλη στο AskisiD.doc και αλλη ηταν παλια στο AskisiD.doc
 ^wav^


Όντως , έγω την έκανα με το παλιό doc ... Φήμες λένε ότι το πρόγραμμα για να είναι σωστό πρέπει να προβλέπει και τις αλλαγές στην εκφώνηση και να συνεχίζει να λειτουργεί σωστά  ;D

Το ίδιο ισχύει και για την Ε νομίζω


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 23, 2014, 20:49:18 pm
σιγα μην την αλλαξουμε κιολας  :D
καμια βοηθεια για αυτο το error: invalid types '<unresolved overloaded function type>[int]' for array subscript| ?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: kdespoik on November 23, 2014, 22:18:33 pm
στη main θα ορισουμε και αντικειμενο τυπου vector ε?


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Vlassis on November 23, 2014, 23:12:26 pm
στη main θα ορισουμε και αντικειμενο τυπου vector ε?
ναι εγω εκανα 3 αντικειμενα τυπου vector !


Title: Re: [C++] Άσκηση D - 2014/2015 - Προθεσμία 23/11/2014
Post by: Fedra on November 23, 2014, 23:54:05 pm
στη main θα ορισουμε και αντικειμενο τυπου vector ε?
ναι εγω εκανα 3 αντικειμενα τυπου vector !

ναι ναι κι εγώ έκανα.


Για να ελέγξουμε τη δεύτερη ανισότητα, αρκούν οι επικαλύψεις που έχουμε κάνει? γτ εγώ έκανα μία ακόμα που να δίνει έναν πίνακα με τα αθροίσματα των μη-διαγώνιων στοιχείων των στηλών για να την ελέγξω και λέω μήπως υπάρχει τρόπος που δε χρειάζεται.