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

Ευρεση του 2ου μεγαλυτερου στοιχειου σε πινακα


I@n15

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

Δημοσ.

Παιδια καλημερα.Θα θελα να ρωτησω το εξης.

1)Δινω στοιχει σ εναν πινακα

2)Κανω ταξινομηση απο το μεγαλυτερο στοιχειο προς το μικροτερο

3)Βρισκω το μεγαλυτερο στοιχειο

4)Βρισκω το 2ο μεγαλυτερο στοιχειο του πινακα.

 

Τι γινεται ομως στην περιπτωση που π.χ Α[0] = 100

Α[1] = 100

εχουμε δηλαδη 2 στοιχεια τα ιδια?δηλαδη 2 max,πως θα κανω τον ελεγχο γι αυτο και πως θα τα εμφανισω?

 

 

>#include <stdio.h>


int main()
{
   int A[6];
   int i,j,temp;

   
   for(i = 0; i <= 5; i++)
   {
       printf("Dose to %io stoixeio tou pinaka:\n",i+1);
       scanf("%i",&A[i]);
   }


   for(i = 0; i <= 5; i++)
   {
       for(j = 0; j <= 5; j++)
       {
           if(A[i] > A[j])
           {
               temp = A[i];
               A[i] = A[j];
               A[j] = temp;
           }
       }
   }


   int MAX = A[0];
   int MAX2 = A[1];

   for(i = 0; i <= 5; i++)
   {
        if(A[i] > MAX)
         {
            MAX = A[i];
         }

         if(A[i] > MAX2 && A[i] != MAX)
         {
            MAX2 = A[i];
         }
   }


   printf("to max einai to %i\n\n",MAX);
   printf("to max2 einai to %i\n",MAX2);

}

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Αυτο που εκανες δε δουλεύει;

 

---------- Το μήνυμα προστέθηκε στις 13:00 ----------

 

int MAX = A[0];

int MAX2 = A[0];

 

while(MAX2==MAX && i < A.length)

{

i++;

MAX2=A;

}

 

 

Εφοσον ειναι ταξινομημένος ο πιναξ σου

 

---------- Το μήνυμα προστέθηκε στις 13:01 ----------

 

Α κ δε μπορω να βγαλω νοημα απο το τροπο σου

Δημοσ.
Παιδια καλημερα.Θα θελα να ρωτησω το εξης.

1)Δινω στοιχει σ εναν πινακα

2)Κανω ταξινομηση απο το μεγαλυτερο στοιχειο προς το μικροτερο

3)Βρισκω το μεγαλυτερο στοιχειο

4)Βρισκω το 2ο μεγαλυτερο στοιχειο του πινακα.

 

Τι γινεται ομως στην περιπτωση που π.χ Α[0] = 100

Α[1] = 100

εχουμε δηλαδη 2 στοιχεια τα ιδια?δηλαδη 2 max,πως θα κανω τον ελεγχο γι αυτο και πως θα τα εμφανισω?

 

 

>#include <stdio.h>


int main()
{
   int A[6];
   int i,j,temp;

   
   for(i = 0; i <= 5; i++)
   {
       printf("Dose to %io stoixeio tou pinaka:\n",i+1);
       scanf("%i",&A[i]);
   }


   for(i = 0; i <= 5; i++)
   {
       for(j = 0; j <= 5; j++)
       {
           if(A[i] > A[j])
           {
               temp = A[i];
               A[i] = A[j];
               A[j] = temp;
           }
       }
   }


   int MAX = A[0];
   int MAX2 = A[1];

   for(i = 0; i <= 5; i++)
   {
        if(A[i] > MAX)
         {
            MAX = A[i];
         }

         if(A[i] > MAX2 && A[i] != MAX)
         {
            MAX2 = A[i];
         }
   }

for(int j =0; j < ArraySize-1; j++)
{
   if(A[j] != A[j+1])
{
     printf("to max einai to %d\n\n",A[j]);
break;
}
else
{
for(k = j; k >=0; k--)
printf("Max elements are:%d ", A[k]);
}
}
   //printf("to max2 einai to %i\n",MAX2);

}

 

To έγραψα στα γρήγορα ούτε καν το έχω check. Όρισε τις μεταβλητές στα loop.

Δημοσ.
>#include <stdio.h>


int main()
{
   int A[6];
   int i,j,temp;

   
   for(i = 0; i <= 5; i++)
   {
       printf("Dose to %io stoixeio tou pinaka:\n",i+1);
       scanf("%i",&A[i]);
   }


   for(i = 0; i <= 5; i++)
   {
       for(j = 0; j <= 5; j++)
       {
           if(A[i] > A[j])
           {
               temp = A[i];
               A[i] = A[j];
               A[j] = temp;
           }
       }
   }


   int MAX = A[0];
   int MAX2 = A[0];
   int i=0;

   while(MAX2==MAX && i < A.length)
   {
        i++;
        MAX2=A[i];
   }


   printf("to max einai to %i\n\n",MAX);
   printf("to max2 einai to %i\n",MAX2);

}

Δημοσ.
Α κ δε μπορω να βγαλω νοημα απο το τροπο σου

 

Φιλε μου Παρης το καταλαβαινω,δεν ειμαι σε καποια σχολη,προσπαθω απο μονος μου να μαθω με αποτελεσμα καμια φορα να γραφω και αρλουμπες,να με συμπαθας ε? :-):-)

 

Σας ευχαριστω πολυ και τους 2,θα κατσω τωρα να το κοιταξω λιγο

Δημοσ.

Απλά στο τελος το εγραψα μαζεμένο!

Καλά κάνεις απλά στο είπα για να μου πεις το σκεπτικό σου . Πρέπει να προσπαθείς να τα κανεις οσο πιο απλα γινονται. Δηλαδή να σκεφτεσε την πιο απλή λύση που μπορεις να βρεις αλλιως χανεται η ουσία!

 

Πχ η λυση που σου πρότεινα ειναι

Οσο το μαξ2 ειναι ισο με το μαξ (δηλαδη το μεγαλυτερο στοιχείο) και δεν εχουμε φτασει στο τελος του πινακα τοτε το μαξ2 να παρει την τιμη του επομενου στοιχείου στη σειρά.

Δημοσ.
Απλά στο τελος το εγραψα μαζεμένο!

Καλά κάνεις απλά στο είπα για να μου πεις το σκεπτικό σου .

 

Ναι και σ ευχαριστω πολυ γι αυτο.Λοιπον το σκεπτικο μου ειναι οτι θα θελα να βρω σ εναν πινακα το μεγαλυτερο του στοιχειο αλλα επειδη μπορει το πρωτο στοιχειο να ειναι το ιδιο στις 3 πρωτες θεσεις να μπορουσα να το εμφανισω αυτο,π.χ τα μεγαλυτερα στοιχεια ειναι τα 3 πρωτα.Κατι τετοιο

Δημοσ.

scanf("%d",&A);

----------------

bubble sort

 

for(int x=0; x<n; x++)

 

{

 

for(int y=0; y<n-1; y++)

 

{

 

if(array[y]>array[y+1])

 

{

 

int temp = array[y+1];

 

array[y+1] = array[y];

 

array[y] = temp;

 

}

 

}

 

}

Δημοσ.

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

 

Ας πουμε ο πινακας μετα την ταξινομηση

 

Α[0] = 5

Α[1] = 5

Α[2] = 4

Α[3] = 3

Α[4] = 2

Α[5] = 1

 

Ας υπθεσουμε οτι εγω θελω να βρω το δευτερο μεγαλυτερο στοιχειο το οποιο ειναι το 4,δεν μου βγαινει αυτο το πραγμα

Δημοσ.

Οτι δεν μου βγαζει σωστο το αποτελεσμα,θα το ξανατσεκαρω να δω ισως εκανα καποιο λαθος εγω

Δημοσ.

o κώδικας του ΠάρηςΓ ελαφρώς αλλαγμένος

 

>
#include <stdio.h>
#include <stdlib.h>
#define N 6
int main()
{
   int A[N];
   int i,j,temp;

   
   for(i = 0; i < N; i++)
   {
       printf("Dose to %do stoixeio tou pinaka:\n",i+1);
       scanf("\n%d",&A[i]);
   }


   for(i = 0; i <N; i++)
   {
       for(j = 0; j <N; j++)
       {
           if(A[i] > A[j])
           {
               temp = A[i];
               A[i] = A[j];
               A[j] = temp;
           }
       }
   }


   int MAX = A[0];
   int MAX2 = A[0];
   
i=0;

   while(MAX2==MAX && i < N-1){
   i++;
   MAX2=A[i];
   }


   printf("to max einai to %d\n\n",MAX);
   printf("to max2 einai to %d\n",MAX2);
system("pause");
}


 

το τέσταρα με τις αλλαγές και δουλεύει οκ

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...