ea
This commit is contained in:
parent
708fc9ab3c
commit
3f743a0312
BIN
du3/program
BIN
du3/program
Binary file not shown.
@ -5,32 +5,84 @@
|
|||||||
#include<time.h>
|
#include<time.h>
|
||||||
#include<stdlib.h>
|
#include<stdlib.h>
|
||||||
|
|
||||||
|
#define max_yr 9999
|
||||||
|
#define min_yr 1900
|
||||||
|
|
||||||
|
int isleap(int y) {
|
||||||
|
if (y % 4 != 0) {
|
||||||
|
return 0;
|
||||||
|
} else if (y % 100 != 0) {
|
||||||
|
return 1;
|
||||||
|
} else if (y % 400 != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int datevalid(int d, int m, int y) {
|
||||||
|
if(y < min_yr || y > max_yr) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m < 1 || m > 12) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(d < 1 || d > 31) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m == 2) {
|
||||||
|
if(isleap(y)) {
|
||||||
|
if(d <= 29) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( m == 4 || m == 6 || m == 9 || m == 11 ) {
|
||||||
|
if(d <= 30) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
char buffer[20];
|
char buffer[20];
|
||||||
struct tm tm = {0};
|
struct tm tm = {0};
|
||||||
|
|
||||||
char *retval = fgets(buffer, sizeof(buffer), stdin);
|
char *retval = fgets(buffer, sizeof(buffer), stdin);
|
||||||
|
|
||||||
if (retval == 0) {
|
if (retval == 0) {
|
||||||
puts("Neplatny datum");
|
puts("Neplatny datum");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = strptime(buffer, "%e.%m.%-Y", &tm);
|
retval = strptime(buffer, "%e.%m.%-Y", &tm);
|
||||||
|
|
||||||
if (retval == 0) {
|
if (retval == 0 || datevalid(tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900) == 0) {
|
||||||
puts("Neplatny datum");
|
puts("Neplatny datum");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
tm.tm_isdst = -1;
|
tm.tm_isdst = -1;
|
||||||
tm.tm_mday += 7;
|
tm.tm_mday += 7;
|
||||||
|
|
||||||
mktime(&tm);
|
if (mktime(&tm) == -1) {
|
||||||
|
puts("Neplatny datum");
|
||||||
strftime(buffer, sizeof(buffer), "%e.%m.%-Y", &tm);
|
return 0;
|
||||||
puts(buffer);
|
}
|
||||||
putc('\n', stdout);
|
|
||||||
|
strftime(buffer, sizeof(buffer), "%e.%m.%-Y", &tm);
|
||||||
return 0;
|
puts(buffer);
|
||||||
}
|
putc('\n', stdout);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user