// Définition des types de données
Type TDate = Enregistrement
Jour : Entier
Mois : Entier
Annee : Entier
Fin
Type TAdresse = Enregistrement
Numero : Entier
Rue : Chaine[50]
Ville : Chaine[20]
Wilaya : Chaine[20]
Cw : Entier // Code Wilaya
Fin
Type THabitant = Enregistrement
Nom : Chaine[20]
Prenom : Chaine[20]
Date_naiss : TDate
Residence : TAdresse
Fin
// Définition de la procédure pour remplir le tableau d'habitants
Procédure RemplirTableau(T : Tableau de THabitant, N : Entier)
Pour i de 1 à N faire
Ecrire("Entrer les informations pour l'habitant ", i)
Ecrire("Nom: ")
Lire(T[i].Nom)
Ecrire("Prenom: ")
Lire(T[i].Prenom)
Ecrire("Date de naissance (jour, mois, année): ")
Lire(T[i].Date_naiss.Jour, T[i].Date_naiss.Mois, T[i].Date_naiss.Annee)
Ecrire("Adresse (Numéro, Rue, Ville, Wilaya, Code Wilaya): ")
Lire(T[i].Residence.Numero, T[i].Residence.Rue, T[i].Residence.Ville, T[i].Residence.Wilaya, T[i].Residence.Cw)
FinPour
FinProcédure
// Définition de la procédure pour afficher les adresses des habitants nés avant une année donnée
Procédure AfficherAdressesAnnee(T : Tableau de THabitant, N : Entier, AnneeLimite : Entier)
Ecrire("Habitants nés avant ", AnneeLimite, ":")
Pour i de 1 à N faire
Si T[i].Date_naiss.Annee < AnneeLimite Alors
Ecrire("Adresse de ", T[i].Nom, " : ", T[i].Residence.Rue, ", ", T[i].Residence.Ville, ", ", T[i].Residence.Wilaya)
FinSi
FinPour
FinProcédure
// Définition de la procédure pour afficher les habitants de Zemmouri (Wilaya de Boumerdes)
Procédure AfficherHabitantsZemmouri(T : Tableau de THabitant, N : Entier)
Ecrire("Habitants de la ville de Zemmouri (Wilaya de Boumerdes) :")
Pour i de 1 à N faire
Si (T[i].Residence.Ville = "Zemmouri") et (T[i].Residence.Wilaya = "Boumerdes") Alors
Ecrire(T[i].Nom, " ", T[i].Prenom, " - Date de naissance: ", T[i].Date_naiss.Jour, "/", T[i].Date_naiss.Mois, "/", T[i].Date_naiss.Annee)
FinSi
FinPour
FinProcédure
// Définition de la procédure pour compter les habitants par wilaya
Procédure CompterHabitantsParWilaya(T : Tableau de THabitant, N : Entier)
Déclarer WilayaCount : Tableau[1..100] de Entier
Déclarer WilayaNames : Tableau[1..100] de Chaine
NbWilayas ← 0
Pour i de 1 à N faire
trouvé ← FAUX
Pour j de 1 à NbWilayas faire
Si T[i].Residence.Wilaya = WilayaNames[j] Alors
WilayaCount[j] ← WilayaCount[j] + 1
trouvé ← VRAI
FinSi
FinPour
Si non trouvé Alors
NbWilayas ← NbWilayas + 1
WilayaNames[NbWilayas] ← T[i].Residence.Wilaya
WilayaCount[NbWilayas] ← 1
FinSi
FinPour
Ecrire("Nombre d'habitants par wilaya:")
Pour i de 1 à NbWilayas faire
Ecrire(WilayaNames[i], ": ", WilayaCount[i], " habitants")
FinPour
FinProcédure
// Programme principal
Début
Déclarer T : Tableau[1..100] de THabitant
Déclarer N, AnneeLimite : Entier
Ecrire("Entrer le nombre d'habitants (N ≤ 100) : ")
Lire(N)
// Appel à la procédure pour remplir le tableau
Appeler RemplirTableau(T, N)
// Saisie de l'année limite pour afficher les adresses
Ecrire("Entrer une année limite pour afficher les adresses des habitants nés avant cette année : ")
Lire(AnneeLimite)
// Afficher les adresses des habitants nés avant l'année limite
Appeler AfficherAdressesAnnee(T, N, AnneeLimite)
// Afficher les habitants de Zemmouri (Wilaya de Boumerdes)
Appeler AfficherHabitantsZemmouri(T, N)
// Compter et afficher le nombre d'habitants par wilaya
Appeler CompterHabitantsParWilaya(T, N)
Fin
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
oudevnet
Sept. 10, 2024, 10:16 p.m.Je suis heureux de pouvoir vous aider avec la correction de cet exercice
mimizola51has
Sept. 10, 2024, 6:44 p.m.je cherche le corrigé de l'exercice svp
merci beaucoup pour ces exerices