Προς το περιεχόμενο
  • 0
Συνδεθείτε  
matrixtv1

δημιουργια αλγοριθμου

Ερώτηση

γεια σας παιδια θελω να φτιαξω εναν αλγοριθμο που να διαβαζει 100 τιμες και να εμφανιζει την μεγαλυτερη και το ποσες φορεςς παρουσιαστηκε και εχω κολισει εδο και μερες και δεν μπορω να το φτιαξω με τιποτα το προτο μερος το εχω κανει αλλα να εμφανιζει ποσεσ φορες παροθσιαστικε με τιποτα μπορειτε να με βοηθισετε επισης η καθε τιμη να διαβαζετε μονο μια φορα

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

10 απαντήσεις σε αυτή την ερώτηση

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

  • 0

γεια σας παιδια θελω να φτιαξω εναν αλγοριθμο που να διαβαζει 100 τιμες και να εμφανιζει την μεγαλυτερη και το ποσες φορες παρουσιαστηκε. Εχω κολλήσει εδω και μερες και δεν μπορω να το φτιαξω με τιποτα. Το πρώτο μερος το εχω κανει, αλλα να εμφανιζει ποσες φορες παρουσιαστήκε με τιποτα. Μπορειτε να με βοηθήσετε? Επισης η καθε τιμη να διαβαζετε μονο μια φορα.

Γενικα οποτε συναντας μια τιμη την συγκρινεις με το προηγουμενο μεγιστο, και αν την ξεπερναει το αντικαθιστα, αν ειναι μικροτερη την αγνοεις (continue). Επισης εχεις και ενα μετρητη σε περιπτωση που η τιμη ειναι ιση με το μεγιστο, και τον αυξανεις αντιστοιχα. Αν αλλαξει το μεγιστο ο μετρητης μηδενιζει.

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Τι σπουδάζεις? Τι σχολή? Είναι ίσως και ο δεύτερος αλγόριθμος που μαθαίνεις πρώτα πρώτα.

 

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 μετατρέπεις σε ότι ψευδογλώσσα θες.

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

...

Γιατί να περάσει δυο φορές τον πίνακα;

 

@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;
}

 

 

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Γιατί να περάσει δυο φορές τον πίνακα;

 

@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 μαξ, μικρότερα.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Δεν κατάλαβα τι εννοείς. Ναι 99 άλλα, όμως στο τέλος θα βρει αυτό που θέλουμε.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Άκυρο, είδα κάνεις count=1; μέσα στην επανάληψη. Θα δουλέψει.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Τωρα που ξαναβλεπω τι ζηταει, ισως θελει divide and conquer αλγοριθμο ο TS.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Υπόδειξη (από σημειώσεις στους αλγόριθμους του ΜΙΤ)

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]);
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

 

Υπόδειξη (από σημειώσεις στους αλγόριθμους του ΜΙΤ)

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]);
}

Διάβασε άλλη μια φορά τι θέλει.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Διάβασε άλλη μια φορά τι θέλει.

 

Δέν την διάβασα την άσκηση αλλά θέλουμε πάντα να είναι σπορταρισμένο το 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]);
 }

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.