Δημοσιεύτηκε: 25 Φεβ 2012, 14:34
από Ilias95
Done! :clap:

Και μια απορία. Η 2η άσκηση σελ.71 ζητάει να πάρω έναν τριψήφιο αριθμό και να τον αντιστρέψω.

Η λύση του King:
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>

int main(void)
{
int n;

printf("Enter a three-digit number: ");
scanf("%d", &n);
printf("The reversal is: %d%d%d\n", n % 10, (n / 10) % 10, n / 100);

return 0;
}

Η δικιά μου:
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
//#include "myextras.h"
#define mySCANF( ... ) \
do { \
char iNPutbUfFeR[1024+1] = {'\0'}; \
fgets( iNPutbUfFeR, 1024+1, stdin ); \
sscanf( iNPutbUfFeR, __VA_ARGS__ ); \
} while(0)

int main(void)
{
int a, b, c;

printf("Enter a three-digit number: ");
mySCANF("%1d%1d%1d", &a, &b, &c);

printf("The reversal is: %d%d%d\n", c, b, a);

return 0;
}

Υπάρχει κάποιος ιδιαίτερος λόγος να προτιμήσει κάποιος την πρώτη λύση; Μου φαίνεται λιγότερο ευανάγνωστη και πιο δυσνόητη.
Ή έχει να κάνει με το ότι εγώ δηλώνω 3 μεταβλητές ενώ αυτός μία; Είναι καλό να αποφεύγουμε την δήλωση μεταβλητών όσο μπορούμε;