Δημοσιεύτηκε: 18 Ιουν 2011, 22:57
Υπάρχει πρόβλημα 
Π.χ. δοκίμασε 18/6/2011 με 5/10/2000, δεν μπαίνει ούτε στο if ούτε στο else, οπότε τερματίζει χωρίς να τυπώσει τίποτα.
Υποθέτω αυτό που θέλεις να κάνεις, σαν λογική, είναι κάτι σαν το παρακάτω ε;
Δεν το τεστάρισα με πολλές περιπτώσεις εισόδου, αλλά δείχνει να δουλεύει σωστά όση η 2η ημερομηνία είναι μικρότερη της 1ης (άρα τώρα λείπει ο έλεγχος ώστε η 2η ημερομηνία να είναι πάντα μικρότερη
)
Π.χ. δοκίμασε 18/6/2011 με 5/10/2000, δεν μπαίνει ούτε στο if ούτε στο else, οπότε τερματίζει χωρίς να τυπώσει τίποτα.
Υποθέτω αυτό που θέλεις να κάνεις, σαν λογική, είναι κάτι σαν το παρακάτω ε;
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <math.h>
#include <string.h>
int main( void )
{
int d1, m1, y1, d2, m2, y2, days, months, years;
// διάβασε την 1η ημερομηνία
printf("Πόσο έχει ο μήνας: ");
scanf("%d", &d1);
printf("Ποιος μήνας είναι: ");
scanf("%d", &m1);
printf("Ποια χρονιά είναι: ");
scanf("%d", &y1);
// διάβασε τη 2η ημερομηνία
printf("\nΠοσο ειχε την μερα που γεννηθηκες; ");
scanf("%d", &d2);
printf("Ποιον μηνα γεννηθηκες: ");
scanf("%d", &m2);
printf("Ποια χρονιά γεννηθηκες: ");
scanf("%d", &y2);
// υπολόγισε τη διαφορά μεταξύ των ημερομηνιών
days = d1 - d2;
months = m1 - m2;
years = y1 - y2;
if (months < 0) {
months += 12;
years--;
}
if (days < 0) {
days += 30;
months--;
}
printf("\nΕίσαι %d χρονών, %d μηνών και %d ημερών \n", years, months, days);
/*
if (month < 0 && day < 0)
{
year1 = year - 1;
month1 = 12 + month;
day1 = 30 + day;
printf("Είσαι %d χρονών, %d μηνών και %d ημερών \n", year1, month1, day1);
}
else if (month > 0 && day > 0 ) {
printf("Είσαι %d χρονών, %d μηνών και %d ημερών \n", year, month, day);
}
*/
printf("\npress ENTER to exit...");
fflush(stdin); getchar();
return 0;
}
Δεν το τεστάρισα με πολλές περιπτώσεις εισόδου, αλλά δείχνει να δουλεύει σωστά όση η 2η ημερομηνία είναι μικρότερη της 1ης (άρα τώρα λείπει ο έλεγχος ώστε η 2η ημερομηνία να είναι πάντα μικρότερη