Friday, January 22, 2016

Limbajul PHP. Functii. Birth date generator

Un enunt adaptat pe baza unei teme de practica individuala din cadrul unui curs de PHP procedural, predat la InfoAcademy Bucuresti.

// Se genereaza in mod aleator o data de nastere. Pentru simplificare, luna generata va fi ianuarie sau februarie.
// Se va incerca generarea zilei in intervalul corect (1-31 pentru ianuarie, 1-28 sau 1-29 pentru februarie, in functie de an).
// Se va afisa un tabel HTML cu: data generata, anul (bisect sau ordinar), zodia.

Algoritmul pentru testarea unui an (bisect/ordinar), aici.

O lista a anilor bisecti care acopera si intervalul utilizat in acest exemplu, aici.

Functia Generator() apeleaza functia is_leap($y) pentru testul numarului (pseudo)aleator care reprezinta anul. In functie de test si de valoare numerica a lunii este apoi generata ziua.

O bucla for apeleaza de 10 ori functia Generator() pentru afisarea celor 10 intrari in tabelul html.

Pe sistemul pe care s-a facut testul, codul nu este rezident in folderul www ci intr-un alias setat corespunzator.

Codul si prinscreen-ul:


<!DOCTYPE HTML>
<html>
<head><title>BD generator</title></head>
<body style = "background-color:Aquamarine;color:DarkOrchid">
<table border = "1", style = "width:40%">
<tr><td>Data nasterii</td><td> Anul </td><td> Zodia </td></tr>

<?php
function is_leap($y)
{
            if($y%4) return 0;
            else if($y%100) return 1;
            else if($y%400) return 0;
            else return 1;   
}

function Generator()
{         
            $yr = rand(1940, 2015);
            $m = rand(1,2);
            $leap = 0;
            if(is_leap($yr))
                        {
                                    $leap = "bisect";
                                    if($m == 2) $d = rand(1,29);
                                    else $d = rand(1,31);
                        }
                        else
                        {
                                    $leap = "ordinar";
                                    if($m == 2) $d = rand(1,28);
                                    else $d = rand(1,31);
                        }
            $zodie = 0;
            if($m == 1) $zodie = ($d <= 19)? "Capricorn" : "Varsator";
            else $zodie = ($d <= 18)? "Varsator" : "Pesti";
            echo "<tr><td>$d.$m.$yr</td><td> $leap </td><td> $zodie </d></tr>";
}
for($i = 0; $i <= 9; $i++) Generator();
?>
</table>
</body>

</html>








No comments:

Post a Comment