7.3
This commit is contained in:
parent
f9fb711061
commit
e35d657961
132
cv3/program.c
132
cv3/program.c
@ -1,132 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#define MAX_LENGTH 10 //Definícia maximálnej dĺžky reťazca
|
|
||||||
bool check(int d, int m, int y);
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
char input[MAX_LENGTH]; //deklarácia vstupneho reťazca
|
|
||||||
scanf("%s", input); //načítanie vstupu
|
|
||||||
int d,m,y; //deklarácia premenných deň, mesiac, rok
|
|
||||||
|
|
||||||
sscanf(input,"%d.%d.%d",&d,&m,&y);//Prevod reťazca zo vstupu na celočíselné hodnoty
|
|
||||||
//Ak sa vo vstupe nachádzaju neplatné znaky, v premenných d,m,y sa objavia nuly, ktoré funkcia check vyhodnotí ako nesprávne
|
|
||||||
|
|
||||||
if(!check(d,m,y) || d == 0 || m < 1 || y < 1 || m > 12){ //Overenie vstupu
|
|
||||||
printf("Nespravny datum\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(m){
|
|
||||||
case 1: //Mesiace s počtom dní 31
|
|
||||||
case 3:
|
|
||||||
case 5:
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 10:
|
|
||||||
if(d > 24){ //Ak je vstupný deň väčší ako 24 znamená to že o týždeň je ďalší mesiac
|
|
||||||
m++;
|
|
||||||
d = (d+7)-31;
|
|
||||||
}else{
|
|
||||||
d+=7; //Ak by nenastal prechod mesiacom, zvýši sa len hodnota deň
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: //Špeciálny prípad február
|
|
||||||
if(y%4==0){ //Overenie prestupného roka
|
|
||||||
if(d > 22){
|
|
||||||
m++;
|
|
||||||
d = (d+7)-29;
|
|
||||||
}else{
|
|
||||||
d+=7;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(d > 21){
|
|
||||||
m++;
|
|
||||||
d = (d+7)-28;
|
|
||||||
}else{
|
|
||||||
d+=7;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 12: //Špeciálny prípad december; ak je deň väčší ako 24, znamená to ďalší rok
|
|
||||||
if(d > 24){
|
|
||||||
y++;
|
|
||||||
m = 1;
|
|
||||||
d = (d+7)-31;
|
|
||||||
}else{
|
|
||||||
d+=7;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: //Mesiace s počtom dní 30
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
case 11:
|
|
||||||
if(d > 23){
|
|
||||||
m++;
|
|
||||||
d = (d+7)-30;
|
|
||||||
}else{
|
|
||||||
d+=7;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(d < 10){ //Výpis dátumu posunutého o týždeň
|
|
||||||
if(m < 10){
|
|
||||||
printf(" %d.0%d.%d\n\n", d,m,y);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
printf(" %d.%d.%d\n\n", d,m,y);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if(m < 10){
|
|
||||||
printf("%d.0%d.%d\n\n", d,m,y);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
printf("%d.%d.%d\n\n", d,m,y);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool check(int d, int m, int y){ //Funkcia na overenie platnosti vstupu (napr.: 31.4 <- neplatný dátum)
|
|
||||||
bool a = true;
|
|
||||||
switch(m){
|
|
||||||
case 1:
|
|
||||||
case 3:
|
|
||||||
case 5:
|
|
||||||
case 7:
|
|
||||||
case 8:
|
|
||||||
case 10:
|
|
||||||
case 12:
|
|
||||||
if(d < 1 || d > 31){
|
|
||||||
a = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
case 6:
|
|
||||||
case 9:
|
|
||||||
case 11:
|
|
||||||
if(d < 1 || d > 30){
|
|
||||||
a = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if(y%4 == 0){
|
|
||||||
if(d < 1 || d > 29){
|
|
||||||
a = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if(d < 1 || d > 28){
|
|
||||||
a = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user