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