Funcions de la pràctica 5.2: diferència entre les revisions
Cap resum de modificació |
Cap resum de modificació |
||
| (Hi ha 2 revisions intermèdies que no es mostren del mateix usuari) | |||
| Línia 3: | Línia 3: | ||
El descompte consisteix en restar un 5% del total dels productes per cada 2 productes comprats, fins a un màxim d’un 20%. La taula següent pot servir de referència | El descompte consisteix en restar un 5% del total dels productes per cada 2 productes comprats, fins a un màxim d’un 20%. La taula següent pot servir de referència | ||
{| class="wikitable mw-collapsible" style="margin:auto; | {| class="wikitable mw-collapsible" style="margin:auto; text-align:center;" | ||
|+ | |+ | ||
!Nº de productes | !Nº de productes | ||
| Línia 35: | Línia 35: | ||
|20 | |20 | ||
|} | |} | ||
Per fel el càlcul del preu, la funció rep 2 paràmetres: el preu unitari del producte i la quantitat comprada i retorna: | |||
* Total original (preu_unitari * quantitat) | |||
* Total final (preu_unitari * quantitat - descompte) | |||
* % de descompte aplicat | |||
Primer, divideix de forma entera la quantitat de producte entre 2 amb la funció intdiv i recupera el quocient enter de la divisió (grups de 2). Per cada grup de 2 s’aplica un descompte del 5%<pre> | |||
$blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3) | |||
</pre>Seguidament, multiplica aquests grups de 2 per 5 per trobar el % fins a 20%. Això ho fa la funció min, la qual retorna el valor més petit. Definim el resultat de la multiplicació i 20. Si el % és menor a 20, s’aplicarà aquell %. Si el % és major a 20, s’aplicarà el 20%. | |||
Exemple: 2 productes = 1 bloc * 5 = 5% | |||
Exemple 2: 4 productes = 2 blocs * 5 = 10% | |||
Exemple 3: min(10 productes = 5 blocs * 5 = 25, '''20'''); (Ja que 20 és més petit que 25, s'agafa el 20)<pre> | |||
$percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% ) | |||
</pre>Un cop definit el % de descompte, calcularem el preu original (quantitat * preu unitari)<pre> | |||
// Preu sense descompte | |||
$total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat) | |||
</pre>I el preu amb descompte<pre> | |||
// Preu amb descompte | |||
$total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte | |||
</pre>Per finalment, retornar els valors anteriorment calculats<pre> | |||
return [ | |||
'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat) | |||
'total_final' => $total_final, // Retornem el preu descomptat (preu_unitari * quantitat - descompte) | |||
'descompte_percent' => $percentatge // Retornem el percentatge descomptat | |||
]; | |||
</pre> | |||
== Codi complet == | |||
El codi complet de la funció és el següent:<pre> | |||
<?php | |||
function calcularPreus($preu_unitari, $quantitat) { // Funció per calcular el descompte, li arriba el preu del producte i la quantitat a comprar | |||
// El descompte consisteix que cada 2 productes es descompte un 5% del total de la suma del mateix producte, fins a un màxim del 20% de descompte sobre el producte | |||
// Aquesta funció retorna sempre el preu sense descompte i el preu amb descompte | |||
$blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3) | |||
$percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% ) | |||
// Preu sense descompte | |||
$total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat) | |||
// Preu amb descompte | |||
$total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte | |||
return [ | |||
'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat) | |||
'total_final' => $total_final, // Retornem el preu descomptat (preu_unitari * quantitat - descompte) | |||
'descompte_percent' => $percentatge // Retornem el percentatge descomptat | |||
]; | |||
} | |||
</pre> | |||
Revisió de 18:02, 31 des 2025
Funció calcularPreus
La funció calcularPreus serveix per calcular el preu final i d'un producte i aplicar un producte si escau.
El descompte consisteix en restar un 5% del total dels productes per cada 2 productes comprats, fins a un màxim d’un 20%. La taula següent pot servir de referència
| Nº de productes | % de descompte |
|---|---|
| 1 | 0 |
| 2 | 5 |
| 3 | 5 |
| 4 | 10 |
| 5 | 10 |
| 6 | 15 |
| 7 | 15 |
| 8 | 20 |
| +8 | 20 |
Per fel el càlcul del preu, la funció rep 2 paràmetres: el preu unitari del producte i la quantitat comprada i retorna:
- Total original (preu_unitari * quantitat)
- Total final (preu_unitari * quantitat - descompte)
- % de descompte aplicat
Primer, divideix de forma entera la quantitat de producte entre 2 amb la funció intdiv i recupera el quocient enter de la divisió (grups de 2). Per cada grup de 2 s’aplica un descompte del 5%
$blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3)
Seguidament, multiplica aquests grups de 2 per 5 per trobar el % fins a 20%. Això ho fa la funció min, la qual retorna el valor més petit. Definim el resultat de la multiplicació i 20. Si el % és menor a 20, s’aplicarà aquell %. Si el % és major a 20, s’aplicarà el 20%.
Exemple: 2 productes = 1 bloc * 5 = 5%
Exemple 2: 4 productes = 2 blocs * 5 = 10%
Exemple 3: min(10 productes = 5 blocs * 5 = 25, 20); (Ja que 20 és més petit que 25, s'agafa el 20)
$percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% )
Un cop definit el % de descompte, calcularem el preu original (quantitat * preu unitari)
// Preu sense descompte $total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat)
I el preu amb descompte
// Preu amb descompte $total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte
Per finalment, retornar els valors anteriorment calculats
return [
'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat) 'total_final' => $total_final, // Retornem el preu descomptat (preu_unitari * quantitat - descompte) 'descompte_percent' => $percentatge // Retornem el percentatge descomptat];
Codi complet
El codi complet de la funció és el següent:
<?php
function calcularPreus($preu_unitari, $quantitat) { // Funció per calcular el descompte, li arriba el preu del producte i la quantitat a comprar
// El descompte consisteix que cada 2 productes es descompte un 5% del total de la suma del mateix producte, fins a un màxim del 20% de descompte sobre el producte
// Aquesta funció retorna sempre el preu sense descompte i el preu amb descompte
$blocs = intdiv($quantitat, 2); // Divideix la quantitat de productes entre 2. (2 productes = 1. 6 productes = 3)
$percentatge = min($blocs * 5, 20); // Calcula el %, fins a un màxim de 20 (2 productes = 1 bloc * 5 = 5% )
// Preu sense descompte
$total_original = $preu_unitari * $quantitat; // Calculem el preu original (el preu unitari del producte + quantitat)
// Preu amb descompte
$total_final = $total_original * (1 - $percentatge / 100); // Calculem el preu final aplicant-hi el descompte
return [
'total_original' => $total_original, // Retornem el total original (preu_unitari * quantitat)
'total_final' => $total_final, // Retornem el preu descomptat (preu_unitari * quantitat - descompte)
'descompte_percent' => $percentatge // Retornem el percentatge descomptat
];
}