fork(3) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5. /*
  6. 20 pazdziernika 1987
  7. niepoprawny format daty
  8. niepoprawny format daty
  9. 29 lutego 2004
  10. niepoprawny format daty
  11. */
  12. void podziel(string s,int &DD,int &MM,int &RRRR){
  13. if(s.length()==8){
  14. DD=stoi(s.substr(0,2));
  15. MM=stoi(s.substr(2,2));
  16. RRRR=stoi(s.substr(4));
  17. }
  18. else {DD=-1;MM=-1;RRRR=-1;}
  19. }
  20. bool SprawdzDate(int &DD,int &MM,int &RRRR){
  21. if(MM==1||MM==3||MM==5||MM==7||MM==8||MM==10||MM==12){
  22. if(DD>0&&DD<=31){
  23. if(RRRR>=1000&&RRRR<=2200) return true;
  24. }
  25. }
  26. else if(MM==4||MM==6||MM==9||MM==11){
  27. if(DD>0&&DD<=30){
  28. if(RRRR>=1000&&RRRR<=2200) return true;
  29. }
  30. }
  31. else if(MM==2){
  32. if(RRRR%4==0&&RRRR%100!= 0||RRRR%400==0){
  33. if(DD>0&&DD<=29){
  34. if(RRRR>=1000&&RRRR<=2200) return true;
  35. }
  36. else{
  37. if(DD>0&&DD<=28){
  38. if(RRRR>=1000&&RRRR<=2200) return true;
  39. }
  40. }
  41. }
  42. }
  43. return false;
  44. }
  45.  
  46. int main() {
  47. // your code goes here
  48. int t=1,DD=0,MM=0,RRRR=0;
  49. string data;
  50.  
  51. cin>>t;
  52. while(t--){
  53. cin>>data;
  54. podziel(data,DD,MM,RRRR);
  55. //cout<<data<<'\n';
  56. //cout<<DD<<"-"<<MM<<"-"<<RRRR<<'\n';
  57. //cout<<SprawdzDate(DD,MM,RRRR)<<'\n';
  58. if(SprawdzDate(DD,MM,RRRR)==0) cout<<"niepoprawny format daty"<<'\n';
  59. else{
  60. cout<<DD<<" ";
  61. switch(MM){
  62. case 1:cout<<"stycznia"<<" ";
  63. break;
  64. case 2:cout<<"lutego"<<" ";
  65. break;
  66. case 3:cout<<"marca"<<" ";
  67. break;
  68. case 4:cout<<"kwietnia"<<" ";
  69. break;
  70. case 5:cout<<"maja"<<" ";
  71. break;
  72. case 6:cout<<"czerwca"<<" ";
  73. break;
  74. }
  75. }
  76. }
  77. return 0;
  78. }
Success #stdin #stdout 0s 15240KB
stdin
5
20101987
31022000
111111111
29022004
29022005
stdout
20 niepoprawny format daty
niepoprawny format daty
29 lutego niepoprawny format daty