Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- { Visit: http://g-lts.info/ for more code! }
- #include <stdio.h>
- #define Nmax 10
- int rearrange(int pin[], int megethos);
- /*Παίρνει :
- - Έναν πίνακα πραγματικών
- - Το Μέγεθος του πίνακα
- Επιστρέφει :
- Το πίνακα που παίρνει με αναδιάταξη στοιχείων, πρώτα οι αρνητικοί και έπειτα οι
- Θετικοί, και όλα αυτά με ένα πέρασμα. :)
- */
- int main (void)
- {
- int p[Nmax] = { 1, -2, 3, 4, 5 , -6, 7, 8, -9, -10}; /* εγώ για δοκιμές βάζω αυτές τις τιμές, για να μην πληκτρολογώ συνεχώς */
- int i=0;
- /* printf("Δώσε %d ακέραιους.\n",Nmax); */
- /* Διάβασμα ακέραιων τιμών και εκχώρηση στις θέσεις του πίνακα */
- /*for (i; i<Nmax; i++)
- {
- printf("%d : ",i);
- scanf("%d",&p[i]);
- }
- */
- /* Ας εμφανίσω και τι έχει τώρα ο πίνακας μέσα για να είμαι σίγουρος.. */
- i = 0;
- for (i; i<Nmax; i++)
- printf("Στην θέση %d ---> %d\n", i, p[i]);
- rearrange(p,Nmax); /* Καλώ την συνάρτηση που θα αναδιάταξη τον πίνακα μου */
- printf("\n\nH νέα αναδιάταξη του πίνακα μας είναι : \n");
- i = 0;
- for (i; i<Nmax; i++)
- printf("Στην θέση %d ---> %d\n", i, p[i]);
- return 0;
- }
- int rearrange(int pin[], int megethos)
- {
- int i = 1; /* Από το ΔΕΎΤΕΡΟ ΣΤΟΙΧΕΊΟ του πίνακα */
- int swap;
- int negative = 0; /* Η θέση negative είναι η θέση που περιμένει για να μπει η επόμενη αρνητική τιμή */
- /* αρχικά η negative αρχίζει από την πρώτη (0 στην C) θέση ( γιατί θέλουμε ΣΤΗΝ ΑΡΧΉ τους αρνητικούς ) και κάθε φορά που βάζουμε κάτι σε αυτή αυξάνουμε
- τον δείκτη - θέση - μεταβλητή negative,κατά 1 για να δείξει στην επόμενη κατά σειρά θέση που θα μπει ο επόμενος ΑΝ τύχει και βρούμε αρνητικός μας αριθμός */
- /* Η θέση που δείχνει η negative είναι η θέση που μπορούμε να βάλουμε (αν βρεθεί) αρνητική τιμή. Θα είναι είτε μια θέση μετά δηλ. την εκχώρηση της τελευταίας
- αρνητικής τιμής που βρέθηκε ή μετά αν είναι στην πρώτη θέση..... */
- for (i; i<megethos; i++) /* Πάρε τον πίνακα από την αρχή μέχρι το τέλος */
- {
- if ( pin[i]<0 ) /* Αν τσιμπήσουμε ΑΡΝΗΤΙΚΌ */
- {
- swap = pin[i]; /* Πέτα τον αρνητικό που βρήκαμε στη ΘΈΣΗ i, σε ένα κουβά */
- pin[i] = pin[negative]; /* Δώσε την τιμή που βρίσκεται στην ΘΈΣΗ negative* ,
- στη θέση που βρίσκεται τώρα το i ( και άρα ο αρνητικός που βρήκαμε )
- έτσι αντικαθιστούμε την αρνητική τιμή που βρήκαμε στην θέση negative */
- pin[negative] = swap; /* Δώσε τον αρνητικό στην θέση που βρίσκεται η negative*/
- negative++; /* Αύξησε στην επόμενη ΘΈΣΗ - +1 την μεταβλητή negative - του πίνακα για τον τυχόν επόμενο αρνητικό που θα βρούμε */
- }
- }
- return 0;
- }
- { Visit: http://g-lts.info/ for more code! }
Advertisement
Add Comment
Please, Sign In to add comment