Δημοσιεύτηκε: 21 Ιουν 2011, 15:07
Θα μπορούσες να βελτιστοποιήσεις λιγάκι και τον κώδικα της xdays() αφαιρώντας το όρισμα του πρόσημου. Μπορείς να την κάνεις δλδ κάπως έτσι:
και κατόπιν να την καλείς είτε με θετικό είτε με αρνητικό όρισμα:
Αφενός το ? : είναι τελεστής και εκτελείται πιο γρήγορα από το απλό if-else, αφετέρου γλιτώνεις ένα όρισμα.
- Κώδικας: Επιλογή όλων
int xdays(int days)
{
/* Get date after / before X days */
struct tm *timeinfo;
time_t rawtime;
rawtime = time(NULL);
timeinfo = localtime(&rawtime);
timeinfo->tm_mday = timeinfo->tm_mday + days;
sprintf(buffer, "Date %s %d days: ",
days < 0 ? "before" : "after",
days < 0 ? -days : days);
mktime(timeinfo);
fputs(buffer, stdout);
strftime(buffer, SIZE, "%A, %B %d %Y.\n", timeinfo);
fputs(buffer, stdout);
return 0;
}
και κατόπιν να την καλείς είτε με θετικό είτε με αρνητικό όρισμα:
- Κώδικας: Επιλογή όλων
xdays(-30); // ή π.χ. xdays(15);
Αφενός το ? : είναι τελεστής και εκτελείται πιο γρήγορα από το απλό if-else, αφετέρου γλιτώνεις ένα όρισμα.
medigeek έγραψε:Διορθώθηκε! Για το setlocale είναι νωρίς ακόμη.