{ Visit: http://g-lts.info/ for more code! } #include #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 %d\n", i, p[i]); rearrange(p,Nmax); /* Καλώ την συνάρτηση που θα αναδιάταξη τον πίνακα μου */ printf("\n\nH νέα αναδιάταξη του πίνακα μας είναι : \n"); i = 0; for (i; i %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