Είναι σημαντικό όταν μαθαίνουμε την γλώσσα προγραμματισμού C να δημιουργούμε συναρτήσεις.
Σήμερα θα δούμε ένα απλό παράδειγμα πως να γράψετε μία συνάρτηση που να μετατρέπει έναν ακέραιο αριθμό του δεκαδικού συστήματος σε οποιοδήποτε σύστημα αρίθμησης με βάση από το 2 μέχρι και το 16.
Σε αυτή την περίπτωση υπάρχουν πολλοί τρόποι για να γράψει κανείς τη συνάρτηση, ένας εκ των οποίων είναι αυτός που ακολουθεί.
*include"stdio.h"
main()
{
int base,j;
char s[20];
char *gets();
void cvt();
printf("Δώσε τη βάση του αριθμητικού συστήματος");
base=atoi(gets(s));
printf(" \n\n Δώσε τον αριθμό");
j=atoi(gets(s)));
cvt(j,base);
}
/*Συνάρτηση που μετατρέπει έναν ακέραιο αριθμό σε κάποιο από τα αριθμητικά συστήματα*/
void cvt(value,base)
int value;
int base;
{
int i=0;
static char vals[]="0123456789abcdef";
char c[20];
do{
c[i++]= vals[value*base];
}
while((value/=base)!=0);
while (i--)
putchar(c[i]);
}
Παρατηρήστε τον τρόπο με τον οποίον εκχωρούνται οι αρχικές τιμές στον πίνακα χαρακτήρων
vals[]
.Μπορείτε να ορίσετε αρχικές τιμές σε εσωτερικούς στατικούς πίνακες αλλά όχι σε αυτόματους.
Τα περιεχόμενα του πίνακα
vals[]
χρησιμοποιούνται για να γεμίσουν τον πίνακα c[]
για την εκτύπωση.Αν μελετήσετε τον τρόπο με τον οποίο δουλεύει ο αλγόριθμος θα παρατηρήσετε ο πίνακας
c[]
γεμίζει ανάποδα απ' ότι εκτυπώνεται. Ο βρόγχος while(i--)
εκτυπώνει τους αριθμούς που μετατράπηκαν όπως ακριβώς θα περιμένετε να τους δείτε.Εάν δεν θέλετε να κάνετε την εκτύπωση των αριθμών που μετατράπηκαν, μέσα στη συνάρτηση μπορείτε να περάσετε στη συνάρτηση έναν πίνακα σαν τμήμα της λίστας ορισμάτων της, και να χρησιμοποιήσετε τον πίνακα αυτόν αντί για τον πίνακα
c[]
.Με έναν διαφορετικό τρόπο, θα μπορούσε κάποιος να γράψει μία νέα συνάρτηση που να αντιγράφει το περιεχόμενο του πίνακα
c[]
σε κάποιον άλλον πίνακα, με την κανονική φορά, δηλαδή να γίνει με τέτοιον τρόπο ώστε η αντιγραφή του πίνακαc[]
σε έναν πίνακα x[]
ώστε να μπορεί να εκτυπωθεί ο πίνακας x[]
σαν μία στοιχειοσειρά (string).
Δημοσίευση σχολίου