7.3
This commit is contained in:
parent
d22428779d
commit
f9fb711061
132
cv3/program.c
Normal file
132
cv3/program.c
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
#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