Exercices Algorithme

Exercice 6 Les Enregistrements Corrigé

Considérons les types d’enregistrements suivants : Type TDate = Enregistrement

Jour, mois, année : entier ;

Fin;

TAdresse = Enregistrement

Numéro : entier ; Rue : chaine [50] ; Ville : chaine [20] ;

Wilaya : chaine [20] ;

Cw : entier ;                { Code Wilaya }

Fin;

THabitant = Enregistrement

Nom, prenom : chaine [20] ; Date_naiss : date ; Residence : Adresse ;

Fin;

Ecrire un algorithme permettant de :

  1. Remplir un tableau T de N habitants (N≤100).
  2. Afficher à partir de T les adresses des habitants nés avant une année de naissance donnée.
  3. Afficher les noms et les dates de naissance des habitants de la ville de ‘Zemmouri‘ de la wilaya de ‘Boumerdes‘.
  4. Editer le nombre d’habitants par wilaya.
// 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.

Images

oudevnet

Sept. 10, 2024, 10:16 p.m.

Je suis heureux de pouvoir vous aider avec la correction de cet exercice

Images

mimizola51has

Sept. 10, 2024, 6:44 p.m.

je cherche le corrigé de l'exercice  svp

merci beaucoup pour ces exerices