Δημοσιεύτηκε: 01 Δεκ 2011, 13:29
Δυστυχώς η split() δεν υπάρχει στη στάνταρ C.
Ένας τρόπος είναι αυτός που σου πρότεινε ο pc-magas, ένας άλλος είναι να χρησιμοποιήσεις τις πράξεις / και %. Και στις 2 περιπτώσεις τα ψηφία του αρχικού αριθμού παράγονται αντεστραμμένα, για αυτό και η χρήση πίνακα για την αποθήκευσή τους, τον οποίο κατόπιν είτε πρέπει να τον αντιστρέψεις είτε να τον διατρέξεις ανάποδα.
Σου δίνω κώδικα για τη 2η περίπτωση, τον οποίον τον έχω επίτηδες συμπυκνωμένο για να κάνεις κι εσύ κάτι
(να τον φέρεις στα μέτρα σου).
Αν θέλεις να παράγονται με τη σωστή σειρά τα ψηφία, αντί για αντεστραμμένα, μπορείς να χρησιμοποιήσεις αναδρομή.
Ένας τρόπος είναι αυτός που σου πρότεινε ο pc-magas, ένας άλλος είναι να χρησιμοποιήσεις τις πράξεις / και %. Και στις 2 περιπτώσεις τα ψηφία του αρχικού αριθμού παράγονται αντεστραμμένα, για αυτό και η χρήση πίνακα για την αποθήκευσή τους, τον οποίο κατόπιν είτε πρέπει να τον αντιστρέψεις είτε να τον διατρέξεις ανάποδα.
Σου δίνω κώδικα για τη 2η περίπτωση, τον οποίον τον έχω επίτηδες συμπυκνωμένο για να κάνεις κι εσύ κάτι
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#define MAXDIGITS 25+1
int main( void )
{
int digits[ MAXDIGITS ] = {0}, num, i;
scanf( "%d", &num );
for (i=0; (digits[i] = num % 10) != 0; i++ )
num /= 10;
while ( --i > -1 )
printf( "%d ", digits[i] );
return 0;
}
Αν θέλεις να παράγονται με τη σωστή σειρά τα ψηφία, αντί για αντεστραμμένα, μπορείς να χρησιμοποιήσεις αναδρομή.