Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Υπαρχει καποιος αποδοτικος τροπος να υπολογισω ολους τους μεσους ορους των τιμων ενος πινακα? πχ αν εχω ενα πινακα 5 στοιχειων δεν θελω να υπολογισω μονο απο 0-4 αλλα πχ απο 2-4 απλα θελω να υπολογιζω ολες τις περιπτωσεις. Υπαρχει καποιος τροπος να γινει αυτο? Καποιο hint θα ηταν χρησιμο γιατι εχω σκαλωσει τωρα.

Δημοσ.

Συγνώμη αλλά δεν κατάλαβα τι εννοείς...

Μιλάμε για πίνακα από Βάση Δεδομένων; Αν ναι, υπάρχει η συνάρτηση AVG() της SQL.

 

φιλικά,

Δημοσ.

Αν εννοείς σε πρόγραμμα και όχι σε 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
}
}

Δημοσ.

Ας πουμε οτι εχω τον πινακα [10, -2, 34, -8, 50, 1, -22] και θελω να βρω οχι τον μεσο ορο του πινακα αλλα πχ των στοιχειων απο την θεση 0-3 η των στοιχειων απο την 2-5 αλλα θελω να γινει για ολα τα στοιχεια.

 

Αυτος ο υπολογισμος που μου δινεις bnvdarklord είναι Ο(ν^2) και δεν μου ειναι αρκετος.

Δημοσ.

Ισως αν κρατάς μερικά αθροισματα να γλιτώσεις κάποιες πράξεις, αλλα την πολυωνυμιή πολυπλοκότητα δεν ξερω αν μπορείς να την γλιτώσεις, καθώς θες όλους τους πιθανούς συνδυασμούς. Είδες καπου οτι γινεται αυτό;

 

(Επίσης η λύση παραπανω ήταν λαθος, το 2 for επρεπε να αρχίζει από i οχι απο 0 το διόρθωσα)

Δημοσ.

Ας πουμε οτι εχω τον πινακα [10, -2, 34, -8, 50, 1, -22] και θελω να βρω οχι τον μεσο ορο του πινακα αλλα πχ των στοιχειων απο την θεση 0-3 η των στοιχειων απο την 2-5 αλλα θελω να γινει για ολα τα στοιχεια.

...

 

Τι εννοείς να γίνει για όλα τα στοιχεία αλλά όχι για όλο τον πίνακα, Δεν καταλαβαίνω τι εννοείς.

Δημοσ.

[10, -2, 34, -8, 50, 1, -22]

πχ ο μεσος ορων ολων, ο μεσος ορος ολων εκτος του 10, ο μεσος ορος ολων εκτος του 10 και -2, ο μεσος ορος ολων εκτος 10,-2,34, ο μεσος ορος των -8, 50, 1 μονο...κλπ κλπ

Δημοσ.

Και στο τέλος θέλεις τον μέσο όρο των επιμέρους μέσων όρων; Αν δηλαδή αυτό γίνει μια συνάρτηση τι θέλεις να σου επιστρέφει;

Δημοσ.

Θελω να μου επιστρεφει τον μεγαλυτερο αριθμο των διαδοχικων ακεραιων που εχουν μεσο ορο μεγαλυτερο απο μια τιμη πχ 10

 

Εχω σκεφτει πως να το κανω αλλα εχω θεμα στο πως θα υπολογισω αυους τους μεσους ορους και πως θα τους κρατησω..πιθανοτατα μετα να κραταω τον καθε ενα με συνεχες update σε μια μεταβλητη max

Δημοσ.

Το ξερω το project αλλα οχι δεν λυνω ασκησεις του. Βασικα δεν εχω ιδεα αν αυτο υπαρχει σαν ασκηση εκει. Θα μπορουσε γιατι μοιαζει με αλλο παρομοιο προβλημα.

Δημοσ.

Θελω να μου επιστρεφει τον μεγαλυτερο αριθμο των διαδοχικων ακεραιων που εχουν μεσο ορο μεγαλυτερο απο μια τιμη πχ 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

Δημοσ.

Κοιτα να δεις ειναι το πληθος των διαδοχικων ακεραιων αλλα εσυ βρισκεις μονο τους

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?

Εκει ειναι το προβλημα μου.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...