Nu stiu ce mi lipseste din codul c++ ptr aceasta problema ................ajutor va rog
Cerinţa
Se citesc 3 numere naturale z l a. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an.
Date de intrare
Programul citește de la tastatură numerele z l a.
Date de ieşire
Programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar.
Restricţii şi precizări
1850 ≤ a ≤ 2500
0 ≤ z,l ≤ 100
codul meu c++:
#include
using namespace std;
int main ()
{
int z, l, a;
cin >> z >> l >> a;
if ( z > 0 && l > 0 && z <= 31 && l <= 12 && a >= 1850 && a <= 2500)
{
cout << "DA";
}
if ( z == 0 || l == 0 || a == 0)
{
cout << "NU";
}
return 0;
}
PRIMESC DOAR 60 DE PUNCTE
AntiEaglesDavids:
31 februarie nu exista :). Indiciu asta ar trebui sa te ajute destul ;)
Răspunsuri la întrebare
Răspuns de
12
Răspuns de
4
C++:
#include <iostream>
using namespace std;
int main(){
int z, l, a, chk1, chk2, chk3;
cin>>z>>l>>a;
chk1 = (l>0 && l<13 && a>0 && z>0 && z<=31);
//Prima verificare - verificam daca luna si anul e ok, si daca ziua se incadreaza in limitele max si min
chk2 = ( (l==1||l==3||l==5||l==7||l==8||l==10||l==12) && z<=31 || (l==2||l==4||l==6||l==9||l==11) && z<=30 );
//Aci verificam fiecare luna in parte daca nu cumva depaseste limita de zile
chk3 = ( l!=2 || ( (a%400==0 || a%4==0 && a%100!=0) && z<=29 || !(a%400==0 || a%4==0 && a%100!=0) && z<=28 ));
//Aci verificam luna februarie, cu anul bisect si toate chestiile
if(chk1 && chk2 && chk3) cout<<"DA";
else cout<<"NU";
}
//++ Atasat
Regex: (probably you won't need it, but it's the best way)
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
PHP:
<?php
$z = $_GET['z'];
$l = $_GET['l'];
$a = $_GET['a'];
echo checkdate($l, $z, $a)?"DA":"NU";
#include <iostream>
using namespace std;
int main(){
int z, l, a, chk1, chk2, chk3;
cin>>z>>l>>a;
chk1 = (l>0 && l<13 && a>0 && z>0 && z<=31);
//Prima verificare - verificam daca luna si anul e ok, si daca ziua se incadreaza in limitele max si min
chk2 = ( (l==1||l==3||l==5||l==7||l==8||l==10||l==12) && z<=31 || (l==2||l==4||l==6||l==9||l==11) && z<=30 );
//Aci verificam fiecare luna in parte daca nu cumva depaseste limita de zile
chk3 = ( l!=2 || ( (a%400==0 || a%4==0 && a%100!=0) && z<=29 || !(a%400==0 || a%4==0 && a%100!=0) && z<=28 ));
//Aci verificam luna februarie, cu anul bisect si toate chestiile
if(chk1 && chk2 && chk3) cout<<"DA";
else cout<<"NU";
}
//++ Atasat
Regex: (probably you won't need it, but it's the best way)
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
PHP:
<?php
$z = $_GET['z'];
$l = $_GET['l'];
$a = $_GET['a'];
echo checkdate($l, $z, $a)?"DA":"NU";
Anexe:
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă