slvsnt Δημοσ. 26 Ιανουαρίου 2009 Δημοσ. 26 Ιανουαρίου 2009 έχω αυτό το κομμάτι κώδικα και θέλω να πετύχω το εξής: καλώ τη συνάρτηση sum() 5 φορές για να μου εμφανίσει το total καθενός απο τα στοιχεία του πίνακα array1 με το αντίστοιχο του code. αν θέλω να υπολογίσω και το συνολικό total όλων των στοιχείων πως θα το κάνω; θα θέσω τύπο επιστροφής στη sum() int θα κάνω return το total και cout τα υπόλοιπα δεδομένα; > class fff { private: int code; int arr[12]; int sf[12]; public: fff(); void sum(); }; void fff::sum() { int total=0; for(int i=0;i<12;i++) total+=arr[i]; cout<<code<<endl<<total; } fff::fff() { // } main() { fff array1[5]; for(int i=0;i<5;i++) { array1[i].sum(); cout<<endl; } }
evabb Δημοσ. 26 Ιανουαρίου 2009 Δημοσ. 26 Ιανουαρίου 2009 κατ αρχας εχεις λαθοι. δεν μπορεις να κανεις declare μια μεταβλητη και να της δωσεις τιμη μεσα στην συναρτηση της κλασης. που ειναι ο constructor σου; κενος; δεν νομιζω οτι θα λειτουργησει. επισης χρειαζεσαι μια συναρτηση public int gettotal() για να ξερεις ποσο ειναι και για να μπορεσεις να το επεξεργαστεις
slvsnt Δημοσ. 26 Ιανουαρίου 2009 Μέλος Δημοσ. 26 Ιανουαρίου 2009 απλά έχω κάνει paste μόνο αυτό το κομμάτι του κώδικα.θεωρούμε ότι ο constructor υπάρχει.το πρόγραμμα έχει και άλλες συναρτήσεις απλά δεν το έχω γράψει όλο.εξάλου δεν μας ενδιαφέρει το υπόλοιπο. εννοείς δεν μπορώ να κάνω declare την μεταβλητή total μεσα στην sum() ? πως δεν μπορώ ?ειναι τοπική μεταβλητή μόνο για τη συνάρτηση.
evabb Δημοσ. 26 Ιανουαρίου 2009 Δημοσ. 26 Ιανουαρίου 2009 απλά έχω κάνει paste μόνο αυτό το κομμάτι του κώδικα.θεωρούμε ότι ο constructor υπάρχει.το πρόγραμμα έχει και άλλες συναρτήσεις απλά δεν το έχω γράψει όλο.εξάλου δεν μας ενδιαφέρει το υπόλοιπο. εννοείς δεν μπορώ να κάνω declare την μεταβλητή total μεσα στην sum() ? πως δεν μπορώ ?ειναι τοπική μεταβλητή μόνο για τη συνάρτηση. νομιζω πως δεν μπορεις, εχεις δοκιμασει να τρεξεις σε προγραμμα την κλαση; να θυμασαι οτι με την κλαση ειναι σαν να φτιαχνεις ενα καινουργιο ειδος μεταβλητης. οσο για το συνολικο total βαλε αυτα που θες μεσα σε ενα διανυσμα και προσθεσετα ολα στο τελος. γενικως βοηθαει πολυ να εχεις μικρες συναρτησεις του στυλ get το ενα η το αλλο για να βλεπεις τα δεδομενα σου ενα απλο return ειναι. το cout δεν θα δωσει στο προγραμμα σου τα στοιχεια που θελεις. απλα τα δειχνει στην οθονη ειναι δλδ για να το δεις εσυ απλως
slvsnt Δημοσ. 26 Ιανουαρίου 2009 Μέλος Δημοσ. 26 Ιανουαρίου 2009 νομιζω πως δεν μπορεις, εχεις δοκιμασει να τρεξεις σε προγραμμα την κλαση; αν κατάλαβα καλά εσύ εννοείς πως πρέπει να δηλώσω όλες τις μεταβλητές ως private στην αρχή. αυτό δεν είναι απαραίτητο στη συγκεκριμένη περίπτωση
slvsnt Δημοσ. 26 Ιανουαρίου 2009 Μέλος Δημοσ. 26 Ιανουαρίου 2009 ίσως να μην το εξηγώ καλά.απλά θέλω να εξάγω αρκετες πληροφορίες απο τη συνάρτηση και δεν ξέρω τον ακριβή τρόπο.αν πρεπει να συνδιάσω τιμή επιστροφής και cout μαζι ή πρέπει να φτιάξω κι άλλες συναρτήσεις -----Προστέθηκε 26/1/2009 στις 01 : 32 : 15----- με λίγα λόγια αυτό στέκει: >int fff::sum() { int total=0; for(int i=0;i<12;i++) total+=arr[i]; cout<<code; return total; } main(){ ..... for(int i=0;i<5;i++) { sinolo +=array1[i].sum(); cout<<endl; } cout<<sinolo; } εκεί που κολάω είναι πως θα βρίσκω το sinolo.μιας και αν θέλω απλή εμφάνιση των στοιχείων αυτό το κάνει η sum()
Evgenios1 Δημοσ. 26 Ιανουαρίου 2009 Δημοσ. 26 Ιανουαρίου 2009 γιατι επιμενεις να εχεις μια συναρτιση input output μεσα στη κλαση σου ? δλδ αν θες να τη χρησιμοποιεισει σε gui τι θα κανεις? delete το κωδικα και παλι απο την αρχη? -----Προστέθηκε 26/1/2009 στις 02 : 09 : 55----- ίσως να μην το εξηγώ καλά.απλά θέλω να εξάγω αρκετες πληροφορίες απο τη συνάρτηση και δεν ξέρω τον ακριβή τρόπο.αν πρεπει να συνδιάσω τιμή επιστροφής και cout μαζι ή πρέπει να φτιάξω κι άλλες συναρτήσεις struct
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.