Exercice 5.10 Terminé

Consigne

Lire la suite des prix (en euros entiers et terminée par zéro) des achats d’un client. Calculer la somme qu’il doit, lire la somme qu’il paye, et simuler la remise de la monnaie en affichant les textes "10 Euros", "5 Euros" et "1 Euro" autant de fois qu’il y a de coupures de chaque sorte à rendre.

Pseudo code

amount, sum, rest, payed, nb10eTicket, nb5eTicket des entiers

DEBUT
    
    sum = 0
    rest = 0
    payed = 0
    nb10eTicket = 0
    nb5eTicket = 0

    TANT QUE amount <> 0
        ECRIRE "Saisissez le montant d'un article"
        LIRE amount
        
        sum = sum + amount
    FIN TANT QUE

    ECRIRE "Vous devez " + sum
    LIRE payed
    
    rest = sum - payed
    
    TANT QUE rest >= 10
        nb10eTicket = nb10eTicket + 1
        rest = rest - 10
    FIN TANT QUE

    SI reste >= 5
        nb5eTicket = 1
        rest = rest - 5
    FIN SI

    ECRIRE "Vous avez acheté pour un total de " + sum + " euros <br/>"
    ECRIRE "Vous avez payé " + payed + "euros <br/>";

    SI rest > 0
        ECRIRE "Vous devez encore " + rest + "euros <br/>";
    SINON
        ECRIRE "Je vous rend: <br/>";
        ECRIRE "    " + nb10eTicket + " billet(s) de 10€ <br/>";
        ECRIRE "    " + nb5eTicket + " billet(s) de 5€ <br/>";
        ECRIRE "    " + rest + " pièce(s) de 1€";
    FIN SI
    
    
    
FIN

Conversion

let sum = 0;
let rest = 0;
let payed = 0;

function javascript() {
    let output = document.querySelector('.response-displayer > .codeblock > pre#javascript');
        output.classList.add('show');
    let nPrice = document.querySelector('input[name="article_price"]');
    let nPayed = document.querySelector('input[name="payed"]');
    let nb10eTicket = 0;
    let nb5eTicket = 0;
    let nb1ePiece = 0;
    let toDisplay = "";

    sum = sum + +nPrice.value;
    payed = payed + +nPayed.value
    rest = sum - payed;

    while(rest <= -10) {
        nb10eTicket++;
        rest = (rest + 10);
    }

    while(rest <= -5) {
        nb5eTicket++;
        rest = (rest + 5);
    }

    while(rest <= -1) {
        nb1ePiece++;
        rest = (rest + 1);
    }

    toDisplay += "Vous avez acheté pour un total de " + sum + "€ <br/>";
    toDisplay += "Vous avez payé " + payed + "€ <br/>";
    
    if (rest > 0) {
        toDisplay += "Vous devez encore " + rest + "€ <br/>";
    } else {
        toDisplay += "Je vous rend: <br/>";
        toDisplay += "    " + nb10eTicket + " billet(s) de 10€ <br/>";
        toDisplay += "    " + nb5eTicket + " billet(s) de 5€ <br/>";
        toDisplay += "    " + nb1ePiece + " pièce(s) de 1€";
    }

    output.innerHTML = toDisplay;

    // Reset fields values
    nPrice.value = "";
    nPayed.value = ""

}
// Already define inside javascript.js
// let sum = 0;
// let rest = 0;
// let payed = 0;

function jquery() {
    $('.response-displayer > .codeblock > pre').removeClass('show')
    let $output = $('.response-displayer > .codeblock > pre#jquery').addClass('show')
    let $nPrice = $('input[name="article_price"]');
    let $nPayed = $('input[name="payed"]');
    let nb10eTicket = 0;
    let nb5eTicket = 0;
    let nb1ePiece = 0;
    let toDisplay = "";

    sum = sum + +$nPrice.val();
    payed = payed + +$nPayed.val();
    rest = sum - payed;

    while(rest <= -10) {
        nb10eTicket++;
        rest = (rest + 10);
    }

    while(rest <= -5) {
        nb5eTicket++;
        rest = (rest + 5);
    }

    while(rest <= -1) {
        nb1ePiece++;
        rest = (rest + 1);
    }

    toDisplay += "Vous avez acheté pour un total de " + sum + "€ <br/>";
    toDisplay += "Vous avez payé " + payed + "€ <br/>";

    if (rest > 0) {
        toDisplay += "Vous devez encore " + rest + "€ <br/>";
    } else {
        toDisplay += "Je vous rend: <br/>";
        toDisplay += "    " + nb10eTicket + " billet(s) de 10€ <br/>";
        toDisplay += "    " + nb5eTicket + " billet(s) de 5€ <br/>";
        toDisplay += "    " + nb1ePiece + " pièce(s) de 1€";
    }

    $output.html(toDisplay);

    // Reset fields values
    $nPrice.val("") 
    $nPayed.val("")
}
<?php

if (empty($_SESSION['sum'])) {
    $_SESSION['sum'] = 0;
    $_SESSION['rest'] = 0;
    $_SESSION['payed'] = 0;
}

$_SESSION['sum'] = $_SESSION['sum'] + intval($_POST['article_price']);
$_SESSION['payed'] = $_SESSION['payed'] + intval($_POST['payed']);
$_SESSION['rest'] = $_SESSION['sum'] - $_SESSION['payed'];
$nb10eTicket = 0;
$nb5eTicket = 0;
$nb1ePiece = 0;
$toDisplay = "";

while ($_SESSION['rest'] <= -10) {
    $nb10eTicket++;
    $_SESSION['rest'] = ($_SESSION['rest'] + 10);
}

while ($_SESSION['rest'] <= -5) {
    $nb5eTicket++;
    $_SESSION['rest'] = ($_SESSION['rest'] + 5);
}

while ($_SESSION['rest'] <= -1) {
    $nb1ePiece++;
    $_SESSION['rest'] = ($_SESSION['rest'] + 1);
}

$toDisplay .= "Vous avez acheté pour un total de " . $_SESSION['sum'] . "€ \n";
$toDisplay .= "Vous avez payé " . $_SESSION['payed'] . "€ \n";

if ($_SESSION['rest'] > 0) {
    $toDisplay .= "Vous devez encore " . $_SESSION['rest'] . "€ \n";
} else {
    $toDisplay .= "Je vous rend: \n";
    $toDisplay .= "    " . $nb10eTicket . " billet(s) de 10€ \n";
    $toDisplay .= "    " . $nb5eTicket . " billet(s) de 5€ \n";
    $toDisplay .= "    " . $nb1ePiece . " pièce(s) de 1€";

    $_SESSION['sum'] = 0;
    $_SESSION['rest'] = 0;
    $_SESSION['payed'] = 0;
}

echo $toDisplay;

unset($_POST['article_price']);
unset($_POST['payed']);

Choisissez un language:

Entrez les valeurs nécessaires:

Résultat du code

Le résultat s'affichera après l'exécution du code.