Tâche 1 : Création d'Identifiants Étudiants par Simulation Aléatoire
Le programme suivent génère des identifiants pour deux filières universitaires. Il utilise une boucle pour produire cinq identifiants, avec un choix aléatoire de la filière et un numéro séquentiel.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TOTAL 5
#define PLAGE_FILIERE1 80
#define PLAGE_FILIERE2 35
int main() {
srand(time(0));
for (int compteur = 0; compteur < TOTAL; compteur++) {
int filiere = rand() % 2;
int num_etudiant;
if (filiere) {
num_etudiant = (rand() % PLAGE_FILIERE1) + 1;
printf("20256343%04d\n", num_etudiant);
} else {
num_etudiant = (rand() % PLAGE_FILIERE2) + 1;
printf("20256136%04d\n", num_etudiant);
}
}
system("pause");
return 0;
}
</time.h></stdlib.h></stdio.h>
Question 1 : Production de nombres aléatoires à l'aide de la fonctoin rand.
Question 2 : Génération d'un nombre aléatoire pour déterminer la filière, suivi de la sélection du format de sortie basé sur cette valeur.
Tâche 2 : Simulation d'un Distributeur Automatique de Boissons
Ce code simule un processus d'achat avec un menu interactif. Il gère la sélection des articles, le calcul des prix et le rendu de monnaie, tout en utilisant une boucle continue pour les entrées invalides.
#include <stdio.h>
#include <stdlib.h>
int main() {
int choix, quantite;
float prix_total = 0.0, montant_paye, monnaie;
while (1) {
printf("\nMenu du distributeur automatique :\n");
printf("1. Cola - 3 euros/boisson\n");
printf("2. Limonade - 3 euros/boisson\n");
printf("3. Jus d'orange - 5 euros/boisson\n");
printf("4. Eau minérale - 2 euros/boisson\n");
printf("0. Quitter\n");
printf("Entrez le code de la boisson : ");
scanf_s("%d", &choix);
if (choix == 0)
break;
if (choix < 1 || choix > 4) {
printf("Code invalide, veuillez réessayer.\n");
continue;
}
printf("Entrez la quantité : ");
scanf_s("%d", &quantite);
if (quantite < 0) {
printf("La quantité ne peut pas être négative.\n");
continue;
}
if (choix == 1 || choix == 2)
prix_total += 3 * quantite;
else if (choix == 3)
prix_total += 5 * quantite;
else
prix_total += 2 * quantite;
printf("Insérez le montant : ");
scanf_s("%f", &montant_paye);
monnaie = montant_paye - prix_total;
printf("Total de l'achat : %.2f euros\n", prix_total);
printf("Monnaie rendue : %.2f euros\n", monnaie);
prix_total = 0.0;
}
printf("Merci pour votre achat !\n");
system("pause");
return 0;
}
</stdlib.h></stdio.h>
Question 1 : Erreur d'accumulation du prix total due à une réinitialisation incorrecte dans la boucle.
Question 2 : Utilisation de continue pour sauter les étapes restantes dans une itération de boucle.
Tâche 3 : Interprétation de Signaux Lumineux Simulés
Ce programme lit des caractères en entrée et affiche des messages correspondants à des feux de signalisation, en utilisant des conditions if-else imbriquées.
#include <stdio.h>
#include <stdlib.h>
int main() {
char signal;
while (1) {
scanf_s("%c", &signal);
if (signal == 'r')
printf("Arrêtez-vous !\n");
else if (signal == 'y')
printf("Attendez un moment\n");
else if (signal == 'g')
printf("Avancez\n");
else
printf("Signal inconnu\n");
getchar();
system("pause");
}
return 0;
}
</stdlib.h></stdio.h>
Exemple d'exécution pour les entrées 'r', 'y', et 'g'.
Tâche 4 : Enalyse des Dépenses Quotidiennes
Le code collecte des montants de dépenses jusqu'à une valeur de terminaison, puis calcule le total, le maximum et le minimum en utilisant des variables de suivi.
#include <stdio.h>
#include <stdlib.h>
int main() {
float depense, total = 0.0, maximum = 0.0, minimum = 20000.0;
printf("Entrez les dépenses du jour (-1 pour arrêter) :\n");
while (1) {
scanf_s("%f", &depense);
if (depense == -1)
break;
total += depense;
if (depense > maximum)
maximum = depense;
if (depense < minimum)
minimum = depense;
}
printf("Total des dépenses : %.1f\n", total);
printf("Dépense la plus élevée : %.1f\n", maximum);
printf("Dépense la plus basse : %.1f\n", minimum);
system("pause");
return 0;
}
</stdlib.h></stdio.h>
Exemple avec des entrées telles que 50.0, 120.5, 30.0, et -1 pour terminer.
Tâche 5 : Classification de Triangles par Côtés
Ce programme vérifie si trois côtés peuvent former un triangle et le classe en type spécifique (rectangle, isocèle, équilatéral) en utilisant des conditions logiques.
#include <stdio.h>
#include <stdlib.h>
int main() {
int cote_a, cote_b, cote_c;
while (1) {
scanf_s("%d%d%d", &cote_a, &cote_b, &cote_c);
if (cote_a + cote_b <= cote_c || cote_a + cote_c <= cote_b || cote_b + cote_c <= cote_a)
printf("Ce n'est pas un triangle valide\n");
else if (cote_a * cote_a == cote_b * cote_b + cote_c * cote_c ||
cote_b * cote_b == cote_a * cote_a + cote_c * cote_c ||
cote_c * cote_c == cote_a * cote_a + cote_b * cote_b)
printf("Triangle rectangle\n");
else if (cote_a == cote_b && cote_b == cote_c)
printf("Triangle équilatéral\n");
else if (cote_a == cote_b || cote_a == cote_c || cote_b == cote_c)
printf("Triangle isocèle\n");
else
printf("Triangle scalène\n");
}
system("pause");
return 0;
}
</stdlib.h></stdio.h>
Exemple avec des valeurs comme 3, 4, 5 pour un triangle rectangle.
Tâche 6 : Jeu de Devinette de Date Aléatoire
Le programme génère une date aléatoire dans un mois et permet à l'utilisateur de deviner avec trois tentatives, utilisant une boucle pour contrôler le nombre d'essais.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int jour_cible, tentative, essais = 0;
srand(time(0));
jour_cible = (rand() % 30) + 1;
printf("Devinez votre jour chanceux en novembre (1-30) :\n");
while (essais < 3) {
printf("Entrez votre tentative : ");
scanf_s("%d", &tentative);
essais++;
if (tentative < jour_cible)
printf("Trop tôt, votre jour est plus tard.\n");
else if (tentative > jour_cible)
printf("Trop tard, votre jour est plus tôt.\n");
else {
printf("Bravo, vous avez deviné !\n");
return 0;
}
if (essais < 3)
printf("Essayez encore (1-30) : ");
}
printf("Tentatives épuisées. Votre jour chanceux était le %d.\n", jour_cible);
system("pause");
return 0;
}
</time.h></stdlib.h></stdio.h>
Exemple avec une entrée correcte ou incorrecte pour illustrer le flux du jeu.