TheRammer Δημοσ. 19 Δεκεμβρίου 2013 Δημοσ. 19 Δεκεμβρίου 2013 μπορω να γραψω τον παρακατω κωδικα σε λιγοτερες γραμμες ? το προβλημα ειναι οτι οταν αλλαζουν τα "xarray[]" δεν αλλαζουν τα "facex" , "x" , "grass1x" , "grass2x" . δηλαδη θελω να μην ειναι απαρετητο να γραψω τον κωδικα στο if statement . int xarray[4]; xarray[0]=facex; xarray[1]=x; xarray[2]=grass1x; xarray[3]=grass2x; if(kbd.DownIsPressed()) { facex=yarray[0]; x=xarray[1]; grass1x=xarray[2]; grass2x=xarray[3]; }
παπι Δημοσ. 19 Δεκεμβρίου 2013 Δημοσ. 19 Δεκεμβρίου 2013 μπορω να γραψω τον παρακατω κωδικα σε λιγοτερες γραμμες ? το προβλημα ειναι οτι οταν αλλαζουν τα "xarray[]" δεν αλλαζουν τα "facex" , "x" , "grass1x" , "grass2x" . δηλαδη θελω να μην ειναι απαρετητο να γραψω τον κωδικα στο if statement . int xarray[4]; xarray[0]=facex; xarray[1]=x; xarray[2]=grass1x; xarray[3]=grass2x; if(kbd.DownIsPressed()) { facex=yarray[0]; x=xarray[1]; grass1x=xarray[2]; grass2x=xarray[3]; } if(kbd.DownIsPressed()) facex = yarray[0]; 1
TheRammer Δημοσ. 20 Δεκεμβρίου 2013 Μέλος Δημοσ. 20 Δεκεμβρίου 2013 if(kbd.DownIsPressed()) facex = yarray[0]; αυτο δεν εχει καν νοημα
migf1 Δημοσ. 20 Δεκεμβρίου 2013 Δημοσ. 20 Δεκεμβρίου 2013 Εγώ πάλι, δεν κατάλαβα την ερώτηση (άρα ούτε την απάντηση). Γενικώς όμως, όταν θέλουμε 2 μεταβλητές να δείχνουν στο ίδιο πράγμα και ενημερώνοντας τη μια να ενημερώνεται αυτόματα και η άλλη, τότε συνήθως κάνουμε την "άλλη" να είναι pointer στη "μια", κι ενημερώνουμε μετά οποιαδήποτε από τις 2.
georgemarios Δημοσ. 20 Δεκεμβρίου 2013 Δημοσ. 20 Δεκεμβρίου 2013 Εκτος και αν ο ΟΡ εκανε καποιο typo, η απαντη του παπι εχει νοημα γιατι απλως αφαιρεσε αχρηστα statements πχ οταν γραψεις Α = Β, ειναι ανουσιο στο καπακι να γραψεις Β = Α (εστω και αν ειναι μεσα σε if)
migf1 Δημοσ. 20 Δεκεμβρίου 2013 Δημοσ. 20 Δεκεμβρίου 2013 Εκτος και αν ο ΟΡ εκανε καποιο typo, η απαντη του παπι εχει νοημα γιατι απλως αφαιρεσε αχρηστα statements πχ οταν γραψεις Α = Β, ειναι ανουσιο στο καπακι να γραψεις Β = Α (εστω και αν ειναι μεσα σε if) Διαβάζοντας την ερώτηση εγώ θεώρησα (λογικά πιστεύω) πως το initalization του xarray[] γίνεται στην αρχή μια φορά, κατόπιν οι τιμές του xarray αλλάζoυν σε άλλα σημεία του προγράμματος, αλλά κάθε φορά που πατιέται το κάτω βελάκι θέλουμε να αντιγράφουμε μέσα στα υπόλοιπα τις ήδη αλλαγμένες τιμές του xarray[]. Γενικώς βρίσκω τελείως ασαφή την αρχική ερώτηση. Ακόμα και εκείνο το "λιγότερες γραμμές" είναι ασαφές αν δεν μας πει ο ts γιατί θέλει να το κάνει με λιγότερες γραμμές (π.χ. αν είναι επειδή το γράφει πολύ συχνά μέσα στον κώδικα, τότε μάλλον πρέπει να το κάνει μια επαναχρησιμοποιούμενη συνάρτηση... αν είναι επειδή νομίζει πως γράφοντας λιγότερες γραμμές γλιτώνει σε επιδόσεις, τότε δεν ισχύει... αν είναι επειδή θέλει να να συνδυάσει λιγότερο κώδικα με καλύτερες επιδόσεις, τότε μάλλον πρέπει να αναθεωρήσει τις μεταβλητές του και να χρησιμοποιήσει δείκτες, κλπ, κλπ).
georgemarios Δημοσ. 20 Δεκεμβρίου 2013 Δημοσ. 20 Δεκεμβρίου 2013 Πραγματι, εχουμε λοιπον ενα μπερδεμα το οποιο προκληθηκε απο το ασαφες 1ο μηνυμα. Ας μας δωσει ο OP περισσοτερες πληροφοριες πριν συνεχισουμε τις ευγενεις μας προσπαθειες να τον βοηθησουμε.
TheRammer Δημοσ. 23 Δεκεμβρίου 2013 Μέλος Δημοσ. 23 Δεκεμβρίου 2013 Εγώ πάλι, δεν κατάλαβα την ερώτηση (άρα ούτε την απάντηση). Γενικώς όμως, όταν θέλουμε 2 μεταβλητές να δείχνουν στο ίδιο πράγμα και ενημερώνοντας τη μια να ενημερώνεται αυτόματα και η άλλη, τότε συνήθως κάνουμε την "άλλη" να είναι pointer στη "μια", κι ενημερώνουμε μετά οποιαδήποτε από τις 2. αυτο με το pointer πως ακριβως το κανω ? Διαβάζοντας την ερώτηση εγώ θεώρησα (λογικά πιστεύω) πως το initalization του xarray[] γίνεται στην αρχή μια φορά, κατόπιν οι τιμές του xarray αλλάζoυν σε άλλα σημεία του προγράμματος, αλλά κάθε φορά που πατιέται το κάτω βελάκι θέλουμε να αντιγράφουμε μέσα στα υπόλοιπα τις ήδη αλλαγμένες τιμές του xarray[]. Γενικώς βρίσκω τελείως ασαφή την αρχική ερώτηση. Ακόμα και εκείνο το "λιγότερες γραμμές" είναι ασαφές αν δεν μας πει ο ts γιατί θέλει να το κάνει με λιγότερες γραμμές (π.χ. αν είναι επειδή το γράφει πολύ συχνά μέσα στον κώδικα, τότε μάλλον πρέπει να το κάνει μια επαναχρησιμοποιούμενη συνάρτηση... αν είναι επειδή νομίζει πως γράφοντας λιγότερες γραμμές γλιτώνει σε επιδόσεις, τότε δεν ισχύει... αν είναι επειδή θέλει να να συνδυάσει λιγότερο κώδικα με καλύτερες επιδόσεις, τότε μάλλον πρέπει να αναθεωρήσει τις μεταβλητές του και να χρησιμοποιήσει δείκτες, κλπ, κλπ). εχω πολλα if statements στα οποια αλλαζουν τα xarray[] . δεν εχω κανενα προβλημα με τις επιδοσεις
migf1 Δημοσ. 23 Δεκεμβρίου 2013 Δημοσ. 23 Δεκεμβρίου 2013 αυτο με το pointer πως ακριβως το κανω ? εχω πολλα if statements στα οποια αλλαζουν τα xarray[] . δεν εχω κανενα προβλημα με τις επιδοσεις Σε απλή μορφή, το κάνεις κάπως έτσι... int x = 5; int *px = &x; οπότε από εκεί και πέρα είτε γράψεις x=10 είτε *px=10, θα ενημερωθούν και τα 2 με την τιμή 10 (αφού ουσιαστικά ο pointer px δείχνει απευθείας στη μνήμη που έχει δεσμευτεί για τη μεταβλητή x). EDIT: Στο παράδειγμά σου, μπορείς να κάνεις εξαρχής τα face, x, grass1 και grass2 να είναι δείκτες στα στοιχεία του xarray[] που σε ενδιαφέρουν, οπότε ανά πάσα στιγμή θα μπορείς με αυτά να αναφέρεσαι στα ενημερωμένα στοιχεία του xarray[] ... πρόσεξε όμως πως αν τους αλλάξεις τιμή θα αλλάξει και το αντίστοιχο στοιχείο του xarray[].
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα