Anubis13 Δημοσ. 28 Νοεμβρίου 2011 Δημοσ. 28 Νοεμβρίου 2011 Υπαρχει καποιος αποδοτικος τροπος να υπολογισω ολους τους μεσους ορους των τιμων ενος πινακα? πχ αν εχω ενα πινακα 5 στοιχειων δεν θελω να υπολογισω μονο απο 0-4 αλλα πχ απο 2-4 απλα θελω να υπολογιζω ολες τις περιπτωσεις. Υπαρχει καποιος τροπος να γινει αυτο? Καποιο hint θα ηταν χρησιμο γιατι εχω σκαλωσει τωρα.
mtsouk Δημοσ. 28 Νοεμβρίου 2011 Δημοσ. 28 Νοεμβρίου 2011 Συγνώμη αλλά δεν κατάλαβα τι εννοείς... Μιλάμε για πίνακα από Βάση Δεδομένων; Αν ναι, υπάρχει η συνάρτηση AVG() της SQL. φιλικά,
bnvdarklord Δημοσ. 28 Νοεμβρίου 2011 Δημοσ. 28 Νοεμβρίου 2011 Αν εννοείς σε πρόγραμμα και όχι σε SQL μπορείς να κάνεις κάτι τέτοιο(απλός ψευδοκώδικας) > average_range(int from, int to) //υπολογισμός μέσου όρου τμήματος του πίνακα { for(i=from; i<=to;i++) { sum += pin[i] } return sum / (to-from) } for(i=0; i < pin_size;i++) { for(j = i; j < pin_size; j++) { print(average_range(i, j)); // υπολογισμός μέσου όρου όλων των τμημάτων 0,0 έως pin_size, pin_size } }
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 Ας πουμε οτι εχω τον πινακα [10, -2, 34, -8, 50, 1, -22] και θελω να βρω οχι τον μεσο ορο του πινακα αλλα πχ των στοιχειων απο την θεση 0-3 η των στοιχειων απο την 2-5 αλλα θελω να γινει για ολα τα στοιχεια. Αυτος ο υπολογισμος που μου δινεις bnvdarklord είναι Ο(ν^2) και δεν μου ειναι αρκετος.
bnvdarklord Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 A θες γραμμική πολυπλοκότητα; Θα το σκεφτώ λιγο.
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 Σπαω το κεφαλι μου αλλα δεν μπορω να το κανω σε λιγοτερο απο τετραγωνικη..Θα το ξανασκεφτω ομως.
bnvdarklord Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Ισως αν κρατάς μερικά αθροισματα να γλιτώσεις κάποιες πράξεις, αλλα την πολυωνυμιή πολυπλοκότητα δεν ξερω αν μπορείς να την γλιτώσεις, καθώς θες όλους τους πιθανούς συνδυασμούς. Είδες καπου οτι γινεται αυτό; (Επίσης η λύση παραπανω ήταν λαθος, το 2 for επρεπε να αρχίζει από i οχι απο 0 το διόρθωσα)
migf1 Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Ας πουμε οτι εχω τον πινακα [10, -2, 34, -8, 50, 1, -22] και θελω να βρω οχι τον μεσο ορο του πινακα αλλα πχ των στοιχειων απο την θεση 0-3 η των στοιχειων απο την 2-5 αλλα θελω να γινει για ολα τα στοιχεια. ... Τι εννοείς να γίνει για όλα τα στοιχεία αλλά όχι για όλο τον πίνακα, Δεν καταλαβαίνω τι εννοείς.
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 [10, -2, 34, -8, 50, 1, -22] πχ ο μεσος ορων ολων, ο μεσος ορος ολων εκτος του 10, ο μεσος ορος ολων εκτος του 10 και -2, ο μεσος ορος ολων εκτος 10,-2,34, ο μεσος ορος των -8, 50, 1 μονο...κλπ κλπ
migf1 Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Και στο τέλος θέλεις τον μέσο όρο των επιμέρους μέσων όρων; Αν δηλαδή αυτό γίνει μια συνάρτηση τι θέλεις να σου επιστρέφει;
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 Θελω να μου επιστρεφει τον μεγαλυτερο αριθμο των διαδοχικων ακεραιων που εχουν μεσο ορο μεγαλυτερο απο μια τιμη πχ 10 Εχω σκεφτει πως να το κανω αλλα εχω θεμα στο πως θα υπολογισω αυους τους μεσους ορους και πως θα τους κρατησω..πιθανοτατα μετα να κραταω τον καθε ενα με συνεχες update σε μια μεταβλητη max
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 Το ξερω το project αλλα οχι δεν λυνω ασκησεις του. Βασικα δεν εχω ιδεα αν αυτο υπαρχει σαν ασκηση εκει. Θα μπορουσε γιατι μοιαζει με αλλο παρομοιο προβλημα.
migf1 Δημοσ. 29 Νοεμβρίου 2011 Δημοσ. 29 Νοεμβρίου 2011 Θελω να μου επιστρεφει τον μεγαλυτερο αριθμο των διαδοχικων ακεραιων που εχουν μεσο ορο μεγαλυτερο απο μια τιμη πχ 10 Αν λέγοντας: "τον μεγαλυτερο αριθμο των διαδοχικων ακεραιων" εννοείς το πλήθος των διαδοχικών ακεραίων, τότε είναι εύκολο, αν εννοείς τον μεγαλύτερο από τους διαδοχικούς ακεραίους, τότε είναι πιο δύσκολο. Τέσπα, σε C... > #include <stdio.h> int main( void ) { int i, sum=0, arr[7] = {10, -2, 34, -8, 50, 1, -22}; float avg = 0.0; for (i=0; i<7; i++) { sum += arr[i]; avg = (float)(sum / (i+1)); printf("avg-%d = %f\n", i+1, avg); } printf("\nAVG = %d / %d = %f\n\n", sum, i, (float)(sum / i) ); return 0; } Αυτό σου τυπώνει τους επιμέρους μέσους όρους και στο τέλος για επιβεβαίωση σου ξανατυπώνει τον τελικό.. > avg-1 = 10.000000 avg-2 = 4.000000 avg-3 = 14.000000 avg-4 = 8.000000 avg-5 = 16.000000 avg-6 = 14.000000 avg-7 = 9.000000 AVG = 63 / 7 = 9.000000
Anubis13 Δημοσ. 29 Νοεμβρίου 2011 Μέλος Δημοσ. 29 Νοεμβρίου 2011 Κοιτα να δεις ειναι το πληθος των διαδοχικων ακεραιων αλλα εσυ βρισκεις μονο τους 1, 1-2,1-2-3,1-2-3-4,1-2-3-4-5,1-2-3-4-5-6,1-2-3-4-5-6-7 τι γινεται πχ με τον μεσο ορο του 4-5-6 η του 2-3-4-5-6? Εκει ειναι το προβλημα μου.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα