تخطَّ إلى المحتوى الرئيسي
Wadifa Infoالوظيفة العمومية بالمغرب FR

نموذج مباراة ولوج السنة الأولى من سلك المهندسين (GLSID و II-BDCC) بالمدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) - يوليوز 2017 - اختبار المعلوميات - الجزء الثاني فقط (الخوارزميات والبرمجة)

🏢 المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) 👤 السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC 🎯 المعلوميات - الخوارزميات والبرمجة (الجزء الثاني فقط) 📅 session de juillet 2017 👁️ 10 مشاهدة

باختصار

هذا نموذج امتحان كتابي سابق لمباراة السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC لدى المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET) (session de juillet 2017)، منشور على وظيفة إنفو للاطلاع والتحميل المجاني بصيغة PDF مع تصحيح مقترح.

الجهة المنظمة
المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET)
الدرجة
السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC
التخصص
المعلوميات - الخوارزميات والبرمجة (الجزء الثاني فقط)
الدورة
session de juillet 2017
عدد الصفحات
7
لغة الأسئلة
الفرنسية
التصحيح
تصحيح مقترح متوفر في هذه الصفحة
موضوع اختبار المعلوميات في مباراة ولوج السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC - المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET)، دورة يوليوز 2017. الوثيقة الرسمية كما نشرتها المؤسسة على موقعها enset-media.ac.ma (نسخة مؤرشفة)، وتتكون من 7 صفحة. لا يتضمن التصحيح.
نموذج مباراة جديد كل يوم على قناة واتساب
هل أفادك؟ شاركه مع من يبحث
WhatsApp Facebook Telegram
تابع تحضيرك: 📄 نموذج مباراة ولوج المدرسة العليا لأسات… 📄 نموذج مباراة ولوج المدرسة العليا لأسات… 📄 نموذج مباراة ولوج المدرسة العليا لأسات…
📝 نص أسئلة النموذج (مستخرج آلياً من الصفحات الممسوحة)

استُخرج هذا النص آلياً من صور الامتحان وقد يحتوي على أخطاء في القراءة — الصور أعلاه هي المرجع.

ءاضيبلار١دلاب ‏جامعة الحسن الثاني‎
ROYAUME DU MAROC UNIVERSITÉ HASSAX II DE CASABLANCA
Ministère de l’Education Nationale, de la 1,2 7
Formation Professionnelle, de l'Enseignement | ١ ‏المملكة المغربية احم‎
Supérieur et de la Recherche Scientifique : 0:
Secrétariat d’Etat Chargé de l'Enseignement — ‏وزارة التربية الوطنية و التكوين المهني لصي‎
Supérieur et de la Recherche Scientifique ‏حث العلم والتعليم العالي‎ ds
‏الدولة المكلفة‎ AUS
D ‏بالتعليم العالي والبحث العلمي‎
de Casablanca Université Hassan II ‏جامعة الحسن الثاني بالدار البيضاء تت‎
Ecole Normale Supérieure | A
de l'Enseignement Technique Mohammedia Ex : D éate
‏المحمدية‎
‎Concours d’accès en première année du cycle d’ingénieurs pour les filières :
— Génie du Logiciel et des Systèmes Informatiques Distribués (GLSID)
— Ingénierie Informatique, Big Data et Cloud Computing (II-BDCC)
Session : Juillet 2017
Epreuve d’Informatique
Durée : 3 heures
Remarques importantes :
- L'épreuve se compose de trois parties :
© Partie Informatique générale (temps recommandé : 30 mn), (Notée sur 20 points)
o Partie Algorithmique et Programmation (temps recommandé : 2h), (Notée sur 80 points)
© Partie techniques d’expression (temps recommandé : 30 mn), (Notée sur 20 points)
- -- 105886 de la calculatrice ou de tout autre appareil électronique est interdit.
- Aucun document n’est autorisé.
- Pour la partie « Informatique générale » :
o Les réponses aux questions doivent être reportées sur la grille de réponse fournie avec cette partie
- Pour la partie « Algorithmique et programmation » :
o Les réponses à toutes les questions doivent être rédigées dans les feuilles de réponses.
© Chaque question du QCM ne peut avoir qu’une seule réponse possible parmi les quatre choix dont
la lettre correspondante (A, B, C ou D) est à reporter dans les feuilles de réponses.
o Les solutions algorithmiques peuvent être rédigées en utilisant un pseudo langage algorithmique
ou l’un des langages de programmation suivants : C, C++, C#, Java
© La clarté et la précision de votre solution algorithmique sera prise en considération.
- Pour la partie « Techniques d’expression » :
© La rédaction de la réponse doit être rendue dans la feuille fournie.
© La réponse à cette partie est obligatoire.
- Aucune autre explication supplémentaire ne sera fournie aux candidats en cours de l’examen.
Page 1 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Partie 2 : Alcorithmique et Programmation (2 H)
- Les réponses à toutes les questions doivent être rédigées dans les feuilles de réponses.
- Chaque question du QCM ne peut avoir qu’une seule réponse possible parmi les quatre choix
dont la lettre correspondante (A, B, € ou D) est à reporter dans les feuilles de réponses.
- Les solutions algorithmiques peuvent être rédigées en utilisant un pseudo langage algorithmique
ou l’un des langages de programmation suivants : C, C++, C#, Java
- La clarté et la précision de votre solution algorithmique sera prise en considération.
QCM (25 points) :
Reportez dans les feuilles de réponses, la lettre qui correspond à la bonne réponse pour les
questions suivantes :
1. On considère la fonction suivante :
int fonctionl()!{
int i,n; i=0; n=0;
int T[]={1,5,8,4,6,7,44,10,20,2};
while (true) {
if(n==5) break;// break permet de sortir de la boucle
n=n+1';
1f(1>9) 1i=i-4;
if(i<0) 1i=i+3;
if (T[i]<T[i+1]) i=1+3;
else
i=i-4;
return T{il;
L’appel de cette fonction permet de retourner :
A) 8 B) 4
C) 6 D) 20
Page 2 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

2. Soit la fonction suivante :
int fonction2(int n) {
int a; üint b; int c; int i;
a = 0; b = 1;
if (n <= 1) {
return n;
else {
while (i <n) {
c=a+b;
1 - 1 + 17
return c;
Pour n=9, la valeur retournée par fonction? est :
A) 9 C) 34
B) 10 0 5
3. Soit la fonction suivante :
int fonction3()!{
int a[]={10,20,-35,35,-10,5,-10,20,30};
int n=9;int 51 = 0; int 52 = 0;
for( int 1 0, 3 - 0: j<n; [++ ){
51 += 2] j 7
if( 51 > 52 ( {
52 = 57
else if( 51 > 0 ( {
12 3 + 7/2
51 = 0;
return s2;
L’appel de cette fonction permet de retourner :
A) 30 B) 65
C) 55 D) 70
Page 3 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

4. Soit la fonction récursive suivante :
void fonctiond4(int n){
if(n>0){
fonction4(n-1);
printf("S%d ",n);
fonction4 (n-1);
Pour n=4, la fonction permet d’afficher :
A)121312141213121 B) 43211234
04321123432111 D) 12312344321121
5. Quelle est la complexité dans le pire cas de la recherche d'un élément dans un arbre
binaire de recherche de hauteur h contenant n nœuds ?
A) @(n) B) © (h)
C) © (log n) D) © (log h)
6. On insère les éléments 4, 3, 12, 7, 9 (dans cet ordre) dans un tas. Dans quel ordre vont-ils
ressortir ?
A) 9, 7, 4 B): 3,4, 7, 2
€) 9 D) 12,9, 7, 4,3
7. Soit l’arbre binaire A suivant :
void afficherContenuArbre (Noeud *A) {
// la structure de l'arbre, la structure de la pile et les //opérations
sur la pile sont considérés déjà définis
Noeud *pt; Element *pil; // pil est une pile
pil=NULL;// initiliser la pile à null
pt=A; //1a pile reçoit la racine de l’arbre
while (pt|l|pil){
if(pt){
Empiler (pt,&pil); //procedure qui empile pt à pil
pt=pt->FG;
else!{
afficherTetePile (pil); // procédure qui affiche le
//contenu de la tête de la pile
Page 4 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

pt=pil->contenu->FD;
Depiler (&pil) ;//procédure qui dépile un élément de la pile
L'appel à cette fonction, avec le paramètre l’arbre de la figure ci-dessus, permet d’afficher :
A)927164853 B) 3782114596
C) 9921764583 D) 9271364 5
8. Quelle opération transforme l'arbre de gauche de la figure ci dessous en celui de droite 7
A) une rotation droite, B) une double rotation,
C) une rotation gauche, D) aucun des trois.
9. A laquelle des structures suivantes s'apparente le plus une représentation de graphe par
listes de successeurs ?
A) une pile, B) un arbre binaire,
C) une table de hachage, D) un tableau bidimensionnel.
Exercice 1 (5 points) :
Soit l’expression suivante :
X=1+(1+2)*2+(1+2+3)*22+(1+2+3+4)*23+ .. . +(1+2+3+4+...-+n)*2"1
1. Ecrire la forme itérative de l’algorithme qui permet de calculer X
2. Ecrire la forme récursive de l’algorithme qui permet de calculer X
Page 5 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Exercice 2 (20 points) :
ESP est un espace d’une seule dimension qui contient un ensemble de points P(x) où x représente
l’abscisse du point P. Dans notre cas, on suppose que ESP est formé des points : A(1), B(3), C(S), D(9),
E(11), F(7) et G(4).
L’algorithme KM, ci-dessous, permet de regrouper ces points en deux groupes homogènes G1 et G2.
1. Choisir de manière aléatoire 2 points formant chacun un groupe. Les groupes
formés G: et G2 ont respectivement les centres C1 et C2 (un centre représente la
moyenne des points d’un groupe)
2. Affecter chaque Point X au groupe Gi ayant le centre le plus proche
3. Recalculer le centre Ci de chaque groupe en utilisant la moyenne des points le
composant
4. Aller à l’étape 2 si la condition d’arrêt n’est pas vérifiée (la condition n’est pas
vérifiée au moment où aucun changement ne peut y avoir lieu après deux itérations
successives).
Questions :
1) L’exécution de la première instruction de l’algorithme KM en choisissant les points À et
B donne lieu aux groupes G1 et G2 ayant respectivement les centres C1=A(1) et C:=B(3).
Ce résultat peut être représenté de la manière suivante:
G1 0 َ ©
Compléter, à partir ‏عل‎ l’instruction 2, l’exécution ‏عل‎ l’algorithme KM sur l’ensemble des points de
l’espace ESP pour former les deux groupes G: et G2 tout en schématisant les groupes obtenus pour
chaque itération.
2) Proposer un algorithme qui permet de regrouper, d’une manière générale, les n points d’un espace
ESP en K groupes.
Page 6 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

Exercice 3 (30 points) :
On considère un réseau routier représenté par un graphe orienté. Les nœuds du graphe représentent des
villes 1, 2, ... n. Les arcs du graphe représentent les routes reliant les villes. Une route peut être soit
unidirectionnelle ou bidirectionnelle. Un chemin entre les nœuds 1 et j mesure une distance d (1, j). La
figure suivante représente un exemple de graphe correspondant à un réseau routier reliant 5 villes.
Nous souhaitons représenter ce graphe par une matrice d’interconnexion carrée M de dimension (n, n) ou
n représente le nombre de nœuds. La valeur de M )1 , j) représente la distance entre le nœud 1 et le nœud j
si un chemin existe du nœud 1 vers le nœud [. Si non, la valeur de M (i, j) est représentée par -1. La
matrice suivante montre un exemple représentant le cas du graphe précédent.
0 1 12 |3 4
0 0 5 |4 1-1
1 15 10 3 1|
2 ]-1-1)0 |2 |4 |
D ])-112 0 [6
4+ ]112 ]-1[6 [0 [
Chaque ville est caractérisée par son nom et ses coordonnées géographiques (latitude, longitude et
altitude) et le nombre de population. Les villes sont stockées dans un tableau NOEUDS/fn].
1. Ecrire le code qui permet de déclarer les structures représentant une ville et un réseau routier en
utilisant des types structurés, des tableaux ou des classes.
2. Ecrire le code d’une fonction qui permet de retourner la distance linéaire entre un nœud 1 et un
nœud j en utilisant les coordonnées géographiques de chaque nœud.
3. Ecrire le code qui permet de retourner la longueur d’un chemin traversant une liste des nœuds.
4. Ecrire le code d’une fonction qui permet de déterminer les différents chemins possibles entre un
nœud 1 vers un nœud j.
5. Ecrire le code d’une fonction qui permet déterminer le chemin le plus proche d’un nœud 1 vers un
nœud j.
6. En plus de la distance, nous souhaitons aussi prendre en considération d’autres caractéristiques
des chemins tels que la vitesse maximale à ne pas dépasser, le débit instantané du chemin
(Nombre de véhicules par seconde), existence ou nom d’une station de service, etc …
A) Proposer une déclaration de la structure représentant le nouveau réseau routier.
B) Expliquer les contraintes qui vont peser sur la détermination du chemin le plus rapide
allant d’un nœud 1 vers un nœud [.
Page 7 sur 7
wadifa-info.com ‏نماذج المباريات من موقع وظيفة إنفو‎

✅ التصحيح المقترح

هذا تصحيح مقترح من إعداد فريق wadifa-info لمساعدتك على فهم منهجية الإجابة — وليس تصحيحاً رسمياً صادراً عن الإدارة المنظِّمة. أسئلة هذا الامتحان محررة بالفرنسية، لذلك التصحيح محرر بالفرنسية أيضاً.

Ce modèle est l'épreuve d'informatique du concours d'accès en 1re année du cycle d'ingénieurs de l'ENSET Mohammedia (filières GLSID et II-BDCC), session de juillet 2017. Durée totale : 3 heures, sans calculatrice ni documents. Le document disponible contient la page de garde et la partie 2 « Algorithmique et programmation » (2 h, notée sur 80) : un QCM de 9 questions et trois exercices. Les parties « Informatique générale » et « Techniques d'expression » ne figurent pas dans le scan. Voici une correction proposée.

💡 Méthode pour les QCM de code : déroulez le programme à la main dans un petit tableau (une colonne par variable, une ligne par tour de boucle). C'est plus sûr que de « deviner » le rôle de la fonction.

QCM (25 points)

  1. C) 6. Déroulement de i à chaque tour : T[0]=1 < T[1]=5 → i=3 ; T[3]=4 < 6 → i=6 ; T[6]=44 > 10 → i=2 ; T[2]=8 > 4 → i=−2 ; 5e tour : i<0 donc i=1, puis T[1]=5 < 8 → i=4. n vaut 5, on sort : T[4] = 6.
  2. C) 34. C'est la suite de Fibonacci : la boucle tourne 8 fois (i de 1 à 8) et c prend les valeurs 1, 2, 3, 5, 8, 13, 21, 34. F(9) = 34.
  3. D) 70. Algorithme de Kadane (somme maximale d'un sous-tableau contigu) : s1 = 10, 30, −5 (remis à 0), puis 35, 25, 30, 20, 40, 70. Le maximum s2 = 70 (sous-tableau 35, −10, 5, −10, 20, 30).
  4. A) 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1. f(n) affiche f(n−1), puis n, puis f(n−1) (schéma des tours de Hanoï) : f(1) = « 1 », f(2) = « 1 2 1 », f(3) = « 1 2 1 3 1 2 1 », f(4) = f(3) 4 f(3), soit 15 nombres.
  5. B) Θ(h). La recherche descend d'un niveau à chaque comparaison ; au pire on parcourt un chemin racine–feuille de longueur h (h ne vaut log n que si l'arbre est équilibré, et peut valoir n s'il est dégénéré).
  6. Réponse probable : B) 3, 4, 7, 9, 12. Un tas restitue toujours ses éléments triés : seules B (tas-min) et D (tas-max) sont possibles. La convention la plus répandue dans les cours d'algorithmique francophones (tas utilisé comme file de priorité « min ») donne B ; avec un tas-max, ce serait D. Retenez surtout le principe : l'extraction se fait dans l'ordre trié.
  7. D) 9 2 7 1 3 6 4 8 5. Le programme est un parcours infixe itératif (on empile en descendant à gauche, on affiche au dépilement, puis on passe au fils droit). Infixe de l'arbre : sous-arbre gauche (9, 2, 7, 1), racine 3, sous-arbre droit (6, 4, 8, 5).
  8. A) une rotation droite. Le fils gauche 8 de la racine 24 devient la racine ; 24 descend à droite de 8, et l'ancien sous-arbre droit de 8 (12 avec 11 et 18) devient le sous-arbre gauche de 24. C'est exactement la rotation droite autour de 24.
  9. C) une table de hachage. Des listes de successeurs = un tableau indexé par les sommets dont chaque case pointe sur une liste chaînée : c'est la structure d'une table de hachage à chaînage.

Exercice 1 (5 points)

Le terme général est (1+2+…+k)·2k−1 = k(k+1)/2 · 2k−1, pour k = 1 à n. Valeurs de contrôle : X(1)=1, X(2)=7, X(3)=31, X(4)=111.

1. Forme itérative

long calculX(int n) {
    long X = 0, somme = 0, puiss = 1;   // somme = 1+...+k, puiss = 2^(k-1)
    for (int k = 1; k <= n; k++) {
        somme += k;
        X += somme * puiss;
        puiss *= 2;
    }
    return X;
}

Une seule boucle : complexité O(n), sans recalculer la somme ni la puissance à chaque tour.

2. Forme récursive

Relation de récurrence : X(0) = 0 et X(n) = X(n−1) + n(n+1)/2 · 2n−1.

long puissance2(int p) { return (p == 0) ? 1 : 2 * puissance2(p - 1); }

long calculXRec(int n) {
    if (n == 0) return 0;
    return calculXRec(n - 1) + (long)n * (n + 1) / 2 * puissance2(n - 1);
}

Exercice 2 (20 points) — algorithme KM (k-moyennes)

1) Exécution sur A(1), B(3), C(5), D(9), E(11), F(7), G(4)

Départ : C1 = 1, C2 = 3. Chaque point va au centre le plus proche, puis on recalcule les moyennes.

ItérationCentres utilisésG1G2Nouveaux centres
1C1=1 ; C2=3{A(1)}{B(3), G(4), C(5), F(7), D(9), E(11)}C1=1 ; C2=39/6=6,5
21 ; 6,5{A, B}{G, C, F, D, E}C1=2 ; C2=36/5=7,2
32 ; 7,2{A, B, G}{C, F, D, E}C1=8/3≈2,67 ; C2=32/4=8
42,67 ; 8{A, B, G, C}{F, D, E}C1=13/4=3,25 ; C2=27/3=9
53,25 ; 9{A, B, G, C}{F, D, E}inchangés → arrêt

Détail des basculements : à l'itération 2, B(3) est à 2 de C1 et à 3,5 de C2 ; à l'itération 3, G(4) est à 2 de C1 et à 3,2 de C2 ; à l'itération 4, C(5) est à 2,33 de C1 et à 3 de C2 ; à l'itération 5, F(7) reste dans G2 (3,75 contre 2). Deux itérations successives donnent les mêmes groupes : l'algorithme s'arrête.

Résultat : G1 = {1, 3, 4, 5} (A, B, G, C), centre 3,25 ; G2 = {7, 9, 11} (F, D, E), centre 9. Sur la copie, dessinez à chaque itération les deux ellipses G1 et G2 avec les abscisses qu'elles contiennent.

2) Généralisation à n points et k groupes

// x[0..n-1] : abscisses ; k groupes ; grp[i] = numéro du groupe du point i
void kmoyennes(double x[], int n, int k, int grp[]) {
    double c[k], somme[k]; int nb[k], change = 1;
    for (int j = 0; j < k; j++) c[j] = x[j];        // k points initiaux (ou tirés au hasard)
    for (int i = 0; i < n; i++) grp[i] = -1;
    while (change) {
        change = 0;
        for (int i = 0; i < n; i++) {                  // étape 2 : affectation
            int best = 0;
            for (int j = 1; j < k; j++)
                if (fabs(x[i] - c[j]) < fabs(x[i] - c[best])) best = j;
            if (grp[i] != best) { grp[i] = best; change = 1; }
        }
        for (int j = 0; j < k; j++) { somme[j] = 0; nb[j] = 0; }
        for (int i = 0; i < n; i++) { somme[grp[i]] += x[i]; nb[grp[i]]++; }
        for (int j = 0; j < k; j++)                      // étape 3 : recalcul des centres
            if (nb[j] > 0) c[j] = somme[j] / nb[j];
    }                                                    // étape 4 : arrêt si aucun changement
}

Pour un espace à plusieurs dimensions, on remplace |x − c| par la distance euclidienne et la moyenne par la moyenne coordonnée par coordonnée. Coût d'une itération : O(n·k).

Exercice 3 (30 points) — réseau routier

1. Déclarations

#define MAX 100
typedef struct {
    char   nom[50];
    double latitude, longitude, altitude;   // degrés, degrés, mètres
    long   population;
} Ville;

typedef struct {
    int    n;                 // nombre de villes
    Ville  NOEUDS[MAX];
    double M[MAX][MAX];       // M[i][j] = longueur de la route i -> j, -1 si pas de route
} Reseau;

Une route bidirectionnelle se traduit par M[i][j] = M[j][i] ; une route à sens unique par une seule des deux cases.

2. Distance linéaire entre i et j

On calcule la distance à vol d'oiseau sur la sphère terrestre (formule de haversine), puis on tient compte de l'écart d'altitude.

#include <math.h>
#define R 6371000.0   // rayon terrestre en mètres
double rad(double d) { return d * M_PI / 180.0; }

double distanceLineaire(Reseau *r, int i, int j) {
    Ville a = r->NOEUDS[i], b = r->NOEUDS[j];
    double dlat = rad(b.latitude - a.latitude), dlon = rad(b.longitude - a.longitude);
    double h = sin(dlat/2)*sin(dlat/2)
             + cos(rad(a.latitude))*cos(rad(b.latitude))*sin(dlon/2)*sin(dlon/2);
    double sol = 2 * R * asin(sqrt(h));           // distance au sol
    double dz  = b.altitude - a.altitude;
    return sqrt(sol*sol + dz*dz);
}

Une réponse plus simple (distance euclidienne sur des coordonnées projetées) est en général acceptée si l'hypothèse est énoncée.

3. Longueur d'un chemin

// chemin[0..k-1] : liste des nœuds traversés ; renvoie -1 si un tronçon n'existe pas
double longueurChemin(Reseau *r, int chemin[], int k) {
    double L = 0;
    for (int p = 0; p < k - 1; p++) {
        double d = r->M[chemin[p]][chemin[p+1]];
        if (d < 0) return -1;
        L += d;
    }
    return L;
}

4. Tous les chemins de i vers j (chemins élémentaires)

Parcours en profondeur avec retour arrière ; un tableau visite empêche de repasser par une ville (sinon le nombre de chemins serait infini à cause des cycles, par exemple 0 → 1 → 0).

int chemin[MAX], visite[MAX];

void tousLesChemins(Reseau *r, int u, int j, int prof) {
    chemin[prof] = u; visite[u] = 1;
    if (u == j) {                                  // chemin complet : on l'affiche
        for (int p = 0; p <= prof; p++) printf("%d ", chemin[p]);
        printf(" (longueur %.1f)\n", longueurChemin(r, chemin, prof + 1));
    } else {
        for (int v = 0; v < r->n; v++)
            if (r->M[u][v] > 0 && !visite[v])
                tousLesChemins(r, v, j, prof + 1);
    }
    visite[u] = 0;                                 // retour arrière
}
// appel : mettre visite[] à 0 puis tousLesChemins(r, i, j, 0);

5. Plus court chemin de i vers j (Dijkstra)

Les distances sont positives : l'algorithme de Dijkstra s'applique.

double plusCourtChemin(Reseau *r, int i, int j, int pred[]) {
    double dist[MAX]; int fixe[MAX];
    for (int v = 0; v < r->n; v++) { dist[v] = INFINITY; fixe[v] = 0; pred[v] = -1; }
    dist[i] = 0;
    for (int t = 0; t < r->n; t++) {
        int u = -1;                                   // sommet non fixé le plus proche
        for (int v = 0; v < r->n; v++)
            if (!fixe[v] && (u == -1 || dist[v] < dist[u])) u = v;
        if (u == -1 || dist[u] == INFINITY) break;
        fixe[u] = 1;
        if (u == j) break;
        for (int v = 0; v < r->n; v++)                // relâchement des arcs sortants
            if (r->M[u][v] > 0 && dist[u] + r->M[u][v] < dist[v]) {
                dist[v] = dist[u] + r->M[u][v];
                pred[v] = u;
            }
    }
    return dist[j];   // INFINITY si j est inaccessible ; le chemin se lit à rebours via pred[]
}

Exemple sur la matrice de l'énoncé : de 0 vers 4 il n'y a pas de route directe ; Dijkstra donne 0 → 2 → 4, longueur 4 + 4 = 8 (contre 0 → 2 → 3 → 4 = 12). Complexité O(n²) avec la matrice.

6. Réseau enrichi

A) On remplace la simple distance par une structure « tronçon » :

typedef struct {
    int    existe;          // 0 si pas de route i -> j
    double distance;        // km
    double vitesseMax;      // km/h
    double debit;           // véhicules par seconde (valeur instantanée, mise à jour)
    int    stationService;  // 0/1
    char   nomStation[50];
} Troncon;

typedef struct {
    int     n;
    Ville   NOEUDS[MAX];
    Troncon T[MAX][MAX];
} ReseauRoutier;

B) Contraintes pour le chemin le plus rapide :

  • Le poids d'un arc n'est plus la distance mais un temps de parcours : au minimum distance / vitesseMax, augmenté selon le débit (congestion) ; il faut donc un modèle temps = f(distance, vitesse, débit).
  • Le débit est instantané : les poids changent dans le temps ; le calcul doit être refait régulièrement, ou bien utiliser un graphe dépendant du temps (le temps d'un tronçon dépend de l'heure à laquelle on y arrive).
  • Des contraintes de faisabilité s'ajoutent : autonomie du véhicule et présence de stations de service sur l'itinéraire, sens de circulation, tronçons fermés.
  • Les poids restent positifs : Dijkstra (ou A* avec la distance linéaire de la question 2 comme heuristique) reste utilisable, mais plusieurs critères (temps, distance, carburant) sont en concurrence : il faut soit les pondérer dans un coût unique, soit chercher un compromis.

أسئلة شائعة حول هذا النموذج

هل يمكن تحميل هذا النموذج مجاناً؟
نعم. صفحات هذا النموذج (7) متاحة للاطلاع والتحميل مجاناً، وبدون تسجيل أو إنشاء حساب.
هل يتضمن هذا النموذج التصحيح؟
نعم. تجد في هذه الصفحة، أسفل صفحات الأسئلة، تصحيحاً مقترحاً يشرح منهجية الإجابة والعناصر المنتظرة، من إعداد فريق وظيفة إنفو.
ما هي الجهة المنظمة والدرجة المعنية بهذا النموذج؟
هذا النموذج من مباراة نظمتها المدرسة العليا لأساتذة التعليم التقني بالمحمدية (ENSET). ويخصّ درجة: السنة الأولى من سلك المهندس - مسلكا GLSID وII-BDCC.
ما هي دورة هذا الامتحان ولغة أسئلته؟
الدورة: session de juillet 2017. والأسئلة باللغة الفرنسية.
أين أجد نماذج أخرى لنفس المباراة؟
جمعنا نماذج نفس العائلة في صفحة مباراة التعليم وأطر الأكاديميات: /نماذج-مباريات/مباراة-التعليم، مرتّبة حسب الدورة من الأحدث إلى الأقدم.

💬 ناقش هذا النموذج (0)

شارك إجاباتك أو صحّح التصحيح — إذا كان لديك رأي مختلف حول أي نقطة، اكتبه هنا ليستفيد باقي المترشحين.

لا يوجد نقاش بعد — شارك إجابتك أو سؤالك حول هذا النموذج.

⚠️ ممنوع نشر أرقام الهاتف أو الروابط أو أي عرض مقابل مال — تُحذف هذه المشاركات تلقائياً.

المصدر: المواقع الرسمية للمؤسسات (نسخ أرشيفية من Wayback Machine)

📲
ثبّت تطبيق وظيفة إنفو على جهازك: اضغط زر المشاركة في أسفل سفاري، ثم اختر إضافة إلى الشاشة الرئيسية. تصلك المباريات الجديدة بسرعة ودون متصفح.