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

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


matrixtv1

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

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

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
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

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

 

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

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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]);
}
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

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

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

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

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

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

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

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

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

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

Σύνδεση

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

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