matrixtv1 Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 γεια σας παιδια θελω να φτιαξω εναν αλγοριθμο που να διαβαζει 100 τιμες και να εμφανιζει την μεγαλυτερη και το ποσες φορεςς παρουσιαστηκε και εχω κολισει εδο και μερες και δεν μπορω να το φτιαξω με τιποτα το προτο μερος το εχω κανει αλλα να εμφανιζει ποσεσ φορες παροθσιαστικε με τιποτα μπορειτε να με βοηθισετε επισης η καθε τιμη να διαβαζετε μονο μια φορα Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
jimakos234 Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 γεια σας παιδια θελω να φτιαξω εναν αλγοριθμο που να διαβαζει 100 τιμες και να εμφανιζει την μεγαλυτερη και το ποσες φορες παρουσιαστηκε. Εχω κολλήσει εδω και μερες και δεν μπορω να το φτιαξω με τιποτα. Το πρώτο μερος το εχω κανει, αλλα να εμφανιζει ποσες φορες παρουσιαστήκε με τιποτα. Μπορειτε να με βοηθήσετε? Επισης η καθε τιμη να διαβαζετε μονο μια φορα. Γενικα οποτε συναντας μια τιμη την συγκρινεις με το προηγουμενο μεγιστο, και αν την ξεπερναει το αντικαθιστα, αν ειναι μικροτερη την αγνοεις (continue). Επισης εχεις και ενα μετρητη σε περιπτωση που η τιμη ειναι ιση με το μεγιστο, και τον αυξανεις αντιστοιχα. Αν αλλαξει το μεγιστο ο μετρητης μηδενιζει. 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Sheogorath Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 Τι σπουδάζεις? Τι σχολή? Είναι ίσως και ο δεύτερος αλγόριθμος που μαθαίνεις πρώτα πρώτα. Anyway, δεν μας λες γλώσσα αλλά είναι κάπως έτσι max=a(1); for i=2:100 if max<a(i) max=a(i); end end k=0; for i=1:100 if max=a(i) k=k+1; end end Αυτά σε Matlab. To μετατρέπεις σε ότι ψευδογλώσσα θες. 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kaliakman Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 ... Γιατί να περάσει δυο φορές τον πίνακα; @TS: Άνοιξε το μόνο αν θες έτοιμη την λύση int main(void) { int array[100]; int max = array[0]; int count = 1; for (int i = 1 ;i < 100 ; i++){ if (array[i] == max) count++; if (array[i] > max){ max = array[i]; count = 1; } } printf("Max is %d and was inputted %d time(s)",max,count); return 0; } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Sheogorath Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 Γιατί να περάσει δυο φορές τον πίνακα; @TS: Άνοιξε το μόνο αν θες έτοιμη την λύση int main(void) { int array[100]; int max = array[0]; int count = 1; for (int i = 1 ;i < 100 ; i++){ if (array[i] == max) count++; if (array[i] > max){ max = array[i]; count = 1; } } printf("Max is %d and was inputted %d time(s)",max,count); return 0; } Αν ο πίνακας δεν έχει το μέγιστο στοιχείο πρώτο, θα μετρήσει παραπάνω max απο ότι είναι. Παράδειγμα, ένας πίνακας με αύξοντες αριθμούς 1-100, έχει μόνο ένα μαξ, το 100 αλλά μέχρι να το βρει έχει μετρήσει άλλα 99 μαξ, μικρότερα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kaliakman Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 Δεν κατάλαβα τι εννοείς. Ναι 99 άλλα, όμως στο τέλος θα βρει αυτό που θέλουμε. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Sheogorath Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 Άκυρο, είδα κάνεις count=1; μέσα στην επανάληψη. Θα δουλέψει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
jimakos234 Δημοσ. 12 Νοεμβρίου 2016 Share Δημοσ. 12 Νοεμβρίου 2016 Τωρα που ξαναβλεπω τι ζηταει, ισως θελει divide and conquer αλγοριθμο ο TS. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kostas.xatzigeorgiou Δημοσ. 14 Νοεμβρίου 2016 Share Δημοσ. 14 Νοεμβρίου 2016 Υπόδειξη (από σημειώσεις στους αλγόριθμους του ΜΙΤ) int [] array = new int[100]; for(int j=0; j<array.length; j++){ for(int k=0; k<j; k++){ if(array[j]>array[k]){ int temp = array[j]; array[j]=array[k]; array[k]=temp; } } } for(int j=0; j<array.length; j++){ System.out.println(array[j]); } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kaliakman Δημοσ. 14 Νοεμβρίου 2016 Share Δημοσ. 14 Νοεμβρίου 2016 Υπόδειξη (από σημειώσεις στους αλγόριθμους του ΜΙΤ) int [] array = new int[100]; for(int j=0; j<array.length; j++){ for(int k=0; k<j; k++){ if(array[j]>array[k]){ int temp = array[j]; array[j]=array[k]; array[k]=temp; } } } for(int j=0; j<array.length; j++){ System.out.println(array[j]); } Διάβασε άλλη μια φορά τι θέλει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
kostas.xatzigeorgiou Δημοσ. 14 Νοεμβρίου 2016 Share Δημοσ. 14 Νοεμβρίου 2016 Διάβασε άλλη μια φορά τι θέλει. Δέν την διάβασα την άσκηση αλλά θέλουμε πάντα να είναι σπορταρισμένο το array μας για να είναι πιό γρήγορο το ψάξιμο.. Για το array των 100 τυχαίων στοιχείων: int array[] = new int[100]; for(int i=0; i < 100 ; i++){ array[i] = (int)(Math.random()*100); Παίρνουμε ακόμα ένα array frequency[100] για να καταχωρηθούν οι επαναλήψεις του κάθε στοιχείου που ψάχνουμε αφού πρώτα το κάνουμε initialization: int frequency[] = new int [100]; for(int j=0; j<100; j++){ frequency[j]=0; } Μετά καταχωρούμε τις επαναλήψεις: for(int j=0; j<100; j++){ frequency[array[j]]++; } και για να δούμε τη συχνότητα όλων των στοιχείων μας που εμφανιζονται μέσα στο αρχικό array μας: for(int j=0; j<array.length; j++){ System.out.println(array[j]+" "+frequency[j]); } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα