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

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

Δημοσ.

γεια σας παιδια θελω να φτιαξω εναν αλγοριθμο που να διαβαζει 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]);
 }

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

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

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

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

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

Σύνδεση

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

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