• Aucun résultat trouvé

DS2 - Algorithmes et Structures de Données Mardi 22 Janvier 2013

N/A
N/A
Protected

Academic year: 2022

Partager "DS2 - Algorithmes et Structures de Données Mardi 22 Janvier 2013"

Copied!
2
0
0

Texte intégral

(1)

DS2 - Algorithmes et Structures de Données

Mardi 22 Janvier 2013

Durée 3H – Documents non autorisés

1. Récursivité et Pile - 4 pts

t : 6   3   0   9   1   7   8   2   5   4

Simulez la pile sur l’appel trier-fusion(t,1,10) (cf résumé de cours) en donnant aussi les valeurs intermédiaires de t après l’appel de fusionner.

2. Fichiers textes - 4 pts

Nous disposons d’un fichier texte contenant des notes (séparées par des espaces) : les notes sont disposées en colonne par matière et en ligne par élève. Nous souhaitons obtenir un nouveau fichier contenant les notes en colonne par élève et en ligne par matière.

Exemple :

10,5 18 15 16,5 8 10,5 12 8,5 12 11,5 10 14 17,5 ! 18 11,5 9 8,5 9 11 7 6 15 10 11

16,5 14 7 8 17,5 6

Ecrivez un programme qui réalise cette transformation. Vous pouvez le découper en fonctions ou procédures, comme bon vous semble.

3. Evaluation d’une expression préfixée - 4 pts

3.1. Quelles sont les écritures préfixée et postfixée de l’expression infixée (2*x+y)*(y-z) ? 3.2. On souhaite évaluer une expression préfixée. Nous rappelons qu’une expression préfixée est soit de la forme opérateur expression expression soit de la forme nombre.

Expliquez en français la méthode récursive de cette évaluation puis écrivez en pseudo langage la fonction récursive evalPrefixe qui réalise cette évaluation.

Fonction evalPrefixe (c : chaine) : réel

On pourra utiliser (entre autres) les fonctions lire-mot(c,i), effectuer1(m,x), effectuer2(m,x,y) et traduire-C2R(m) vues en TD (sur les piles).

(2)

4. Pointeurs - 8 pts

On représente le réseau routier d’un pays de la manière suivante : les villes sont des enregistrements chaînés les uns aux autres qui « pointent » également vers des enregistrements appelés « connexions routières » ; ces derniers sont chaînés entre eux lorsqu’ils concernent la même ville ; chaque connexion « pointe » de plus vers un « tronçon routier » qui indique le numéro de la route, la distance, le péage ainsi que l’origine et l’extrémité du tronçon (pointeurs sur des villes).

Exemple : la structure de données représentant les connexions entre les villes A, B et C donnent :

La description des structures de données utilisées est donc la suivante :

Type listeVille = ^ville listeConRou = ^conRou listeTron = ^tron

ville = Enregistrement nom : Chaîne suiv : listeVille connex : listeConRou FinEnregistrement

conRou = Enregistrement

suiv : listeConRou tron : listeTron FinEnregistrement tron = Enregistrement

route : Chaîne

dist, peage : entier orig, extrem : listeVille FinEnregistrement

4.1. On souhaite écrire la fonction sontReliees qui retourne un pointeur sur un tronçon routier entre les villes A et B (données par leur nom), si un tel tronçon existe. Dans le cas contraire, la fonction retourne « nil ».

Expliquez le principe en français puis écrivez en pseudo-langage cette fonction.

Fonction sontReliees (A, B : chaine) : listeTron

4.2. On souhaite écrire une procédure donneVille qui retourne le nom des deux villes reliées par un tronçon routier donné par son nom (le tronçon existe).

Expliquez le principe en français puis écrivez en pseudo-langage cette procédure.

Procedure donneVille (E nomtron : chaine, S A, B : chaine)

Références

Documents relatifs

Ecrire la procédure Carré(E xa,ya,d,f : entier) où xa et ya sont les coordonnées du sommet en bas à gauche du grand carré, d est la longueur de son côté et f la longueur

Expliquer en français la méthode (vous appellerez la fonction javanais-inverse pour faire la traduction en français d’une chaîne écrite en javanais). Écrire en

En utilisant un tableau de notes pour faire les calculs, écrivez un programme qui calcule ces valeurs (vous pouvez écrire plusieurs fonctions ou procédures comme bon vous

Nous souhaitons calculer la fréquence de chacune des notes (entières sur vingt) contenues dans un fichier texte (ce fichier contient une note par ligne). Expliquer

Expliquer en français comment effectuer la traduction d’un message (message et message codé sont enregistrés dans 2 fichiers texte) de façon optimale. La clé et la table sont

numl pointe sur la ligne non vide suivante suivl (les lignes sont classées selon les numéros de lignes croissants) et sur son premier élément non nul suivc ; les éléments

On veut écrire une fonction qui transforme ce tableau en une liste chainée l triée dans l’ordre croissant dont les valeurs sont uniques (on ne garde qu’une seule occurrence

On dispose de la procédure dessiner-carré(x,y,c : entier) qui dessine le carré de centre x,y et de demi- côté