PRREL

On souhaite écrire un algorithme permettant le gestion d'un panier sur un site marchand de grande distribution tel que ChronoDrive ou LeclercDrive. Pour cela, pour chaque article ajouté, la catégorie du produit (représentée par un caractère, avec 'A' pour les produits alimentaires, 'B' pour les produits d'hygiène et 'C' pour les autres catégories), le prix du produit et la quantité seront précisés.

1. Écrire un algorithme permettant de saisir la catégorie, le prix et la quantité pour un article ajouté au panier et d'afficher le montant total à payer (prix × quantité).

programme panier
  var categorie : caractère;
      prix, total : décimal;
      quantite : entier;
début
  categorie <- 'D';

  tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
    écrire("Catégorie du produit (A, B, ou C): ");
    lire(categorie);
  fin

  écrire("Prix du produit : ");
  lire(prix);

  écrire("Quantité : ");
  lire(quantite);

  total <- prix * quantite;

  écrire("Total à payer : ");
  écrire(total);
fin

2. Écrire un algorithme permettant de saisir la catégorie, le prix et la quantité pour les n articles ajoutés au panier et d'afficher le montant total à payer. Le nombre n sera saisi par l'utilisateur en début d'algorithme.

programme panier
  var categorie : caractère;
      prix, total : décimal;
      quantite, n, i : entier;
début
  écrire("Nombre de produits : ");
  lire(n);

  total <- 0;

  pour i allant de 1 à n faire
    // Important de le mettre dans la boucle car sinon la valeur
    // serait la même que celle du produit précédemment rentré.
    categorie <- 'D';

    tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
      écrire("Catégorie du produit (A, B, ou C): ");
      lire(categorie);
    fin

    écrire("Prix du produit : ");
    lire(prix);

    écrire("Quantité : ");
    lire(quantite);

    total <- total + (prix * quantite);
  fin

  écrire("Total à payer : ");
  écrire(total);
fin

3. Modifier l'algorithme précédent en changeant la boucle utilisée.

programme panier
  var categorie : caractère;
      prix, total : décimal;
      quantite, n, i : entier;
début
  écrire("Nombre de produits : ");
  lire(n);

  total <- 0;
  i <- 1;

  tant que (i <= n) faire
    categorie <- 'D';

    tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
      écrire("Catégorie du produit (A, B, ou C): ");
      lire(categorie);
    fin

    écrire("Prix du produit : ");
    lire(prix);

    écrire("Quantité : ");
    lire(quantite);

    total <- total + (prix * quantite);
    i     <- i + 1;
  fin

  écrire("Total à payer : ");
  écrire(total);
fin

4. Écrire un algorithme permettant de saisir la catégorie, le prix et la quantité pour des articles ajoutés au panier jusqu'à ce que le nombre de produits ajoutés soit égal à 10 ou que le montant total de la commande dépasse 70 euros.

programme panier
  var categorie : caractère;
      prix, total : décimal;
      quantite, n, i : entier;
début
  // Ici, on ne demande plus le nombre de produit car ce n'est
  // plus nécessaire, la boucle ne dépend plus de `n`.

  total <- 0;
  i <- 1;

  tant que (i <= 10 et total <= 70) faire
    categorie <- 'D';

    tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
      écrire("Catégorie du produit (A, B, ou C): ");
      lire(categorie);
    fin

    écrire("Prix du produit : ");
    lire(prix);

    écrire("Quantité : ");
    lire(quantite);

    total <- total + (prix * quantite);
    i     <- i + 1;
  fin

  écrire("Total à payer : ");
  écrire(total);
fin

5. Écrire un algorithme permettant de saisir la catégorie, le prix et la quantité pour des articles ajoutés au panier tant que le nombre de produits ajoutés de catégorie 'A' est inférieur ou égal à 20.

programme panier
  var categorie : caractère;
      prix, total : décimal;
      quantite, n, compteura : entier;
début
  écrire("Nombre de produits : ");
  lire(n);

  total <- 0;
  compteura <- 0;

  tant que (compteura < 20) faire
    categorie <- 'D';

    tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
      écrire("Catégorie du produit (A, B, ou C): ");
      lire(categorie);
    fin

    si (categorie = 'A')
      compteura <- compteura + 1;
    fin

    écrire("Prix du produit : ");
    lire(prix);

    écrire("Quantité : ");
    lire(quantite);

    total <- total + (prix * quantite);
  fin

  écrire("Total à payer : ");
  écrire(total);
fin

6. Écrire un algorithme permettant de saisir la catégorie, le prix HT et la quantité pour les n articles ajoutés au panier et d'afficher le montant total TTC à payer. Pour cela, le montant de la TVA à appliquer sera de 5,5% pour les produits de la catégorie 'A' et 20% pour les produits de la catégorie 'B' et 'C'.

// Pour cet algorithme ci, on ne se base pas sur celui de la
// question précédente mais sur celui de la question 2 car
// il est plus similaire vu que l'on réintroduit `n`.
programme panier
  var categorie : caractère;
      prix, totala, totalbc : décimal;
      quantite, n : entier;
début
  écrire("Nombre de produits : ");
  lire(n);

  totala  <- 0;
  totalbc <- 0;

  pour i allant de 1 à n faire
    categorie <- 'D';

    tant que (categorie != 'A' et categorie != 'B' et categorie != 'C')
      écrire("Catégorie du produit (A, B, ou C): ");
      lire(categorie);
    fin

    écrire("Prix HT du produit : ");
    lire(prix);

    écrire("Quantité : ");
    lire(quantite);

    si (categorie = 'A')
      totala <- totala + ((prix + (prix * 0.055)) * quantite);
    sinon
      totalbc <- totalbc + ((prix + (prix * 0.2)) * quantite);
    fin
  fin

  écrire("Total à payer : ");
  écrire(totala + totalbc);
fin