Fraternité d entiers (Version tableau) [th08] - Exercice

Documents pareils
alg - Classes, instances, objets [oo] Exercices résolus

C++ - Classes, instances, objets [oo] Exercices résolus

Architecture des Systèmes d Information Architecture des Systèmes d Information

Algorithmes récursifs

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Recherche dans un tableau

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

V- Manipulations de nombres en binaire

Développement décimal d un réel

STAGE IREM 0- Premiers pas en Python

Partie 1. Fonctions plus complexes dans Excel. Fonctions Si(), Et(), Ou() et fonctions imbriquées. Opérateurs logiques. I.1.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Initiation à la Programmation en Logique avec SISCtus Prolog

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1 Recherche en table par balayage

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

TP 1. Prise en main du langage Python

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Algorithmique et Programmation, IMA

Initiation à LabView : Les exemples d applications :

Objets Combinatoires élementaires

Travaux Dirigés n 1 : chaînes de caractères

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Sommaire. Structure. Liste simplement chaînée ALGORITHME ET STRUCTURES DE DONNÉES II

TP, première séquence d exercices.

Quelques Algorithmes simples

Compter à Babylone. L écriture des nombres

CORRECTION EXERCICES ALGORITHME 1

Algorithmique I. Algorithmique I p.1/??

ARBRES BINAIRES DE RECHERCHE

Cours Informatique Master STEP

Les chaînes de caractères

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Adama MBODJI MBODJ.SYSTEM

Chapitre 5 : Flot maximal dans un graphe

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Chapitre VI - Méthodes de factorisation

Cours A7 : Temps Réel

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

TD 1 - Structures de Traits et Unification

Algorithme. Table des matières

Fonction inverse Fonctions homographiques

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.


Correction du baccalauréat ES/L Métropole 20 juin 2014

Synthèse «Le Plus Grand Produit»

Chapitre 2. Eléments pour comprendre un énoncé

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Conversion d un entier. Méthode par soustraction

Excel avancé. Frédéric Gava (MCF)

TP3 : Manipulation et implantation de systèmes de fichiers 1

1. Introduction Création d'une requête...2

Conseils pour l exploitation des relevés de comptes reçus en télétransmission par les protocoles EDI WEB ou EBICS.

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Définition des Webservices Ordre de paiement par . Version 1.0

Dérivation : cours. Dérivation dans R

Nombre dérivé et tangente

Algorithmique et Programmation

Descriptif des fonctionnalités de notre site professionnel. Page 1 sur 13

Feuille TD n 1 Exercices d algorithmique éléments de correction

Partie 1 - Séquence 3 Original d une fonction

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Proposition. Si G est un groupe simple d ordre 60 alors G est isomorphe à A 5.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Les différents types de données et leurs opérations de base

Prêt(e) pour le CE1. Tu es maintenant au CE1. Avant de commencer les leçons, nous allons réviser avec toi!

Représentation des Nombres

Cours d initiation à la programmation en C++ Johann Cuenin

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

SERIE 1 Statistique descriptive - Graphiques

Université Ibn Zohr Excel Résume de cours

La fonction exponentielle

Plus courts chemins, programmation dynamique

ENRICHISSEZ VOS REFERENCES BANCAIRES!

Guide d utilisation de la base de données bibliographiques. Centre de ressources - IFsanté

Par combien de zéros se termine N!?

OCL - Object Constraint Language

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Définitions. Numéro à préciser. (Durée : )

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

EXCEL TUTORIEL 2012/2013

Plateforme PAYZEN. Définition de Web-services

Probabilités conditionnelles Loi binomiale

DEVOIR MAISON : THEME : LES CLES DE CONTROLE. I. La clé des codes barres

Le langage C. Séance n 4

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

L exclusion mutuelle distribuée

Correction TD algorithmique

Logiciel de Base. I. Représentation des nombres

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours d Analyse. Fonctions de plusieurs variables

Cours de Probabilités et de Statistique

Taux d évolution moyen.

INF601 : Algorithme et Structure de données

TD3 - Facturation avec archivage automatisé

Transcription:

Fraternité d entiers (Version tableau) [th08] - Exercice Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 10 avril 2015 Table des matières 1 Stratégie naïve 1 1.1 Stratégie naïve................................ 1 1.2 Tableau de présence............................. 2 1.3 Test de fraternité............................... 3 2 Autre stratégie, Version Tableau 3 2.1 Autre stratégie................................ 3 2.2 Procédure decomposer............................ 4 2.3 Procédure unifiertab (unification d un tableau trié)............ 5 2.4 Fonction identiquestab (égalité de tableaux)................ 5 2.5 Procédure triselection (tri par sélection).................. 5 2.6 Test de fraternité............................... 5 3 Autre stratégie bis, Version Tableau 6 3.1 Autre stratégie bis.............................. 6 3.2 Fonction evalchiffres............................. 7 3.3 Test de fraternité............................... 7 4 Recherche exhaustive 8 Fraternité d entiers / pg-fraternitea1 (C++, TP) Cet exercice réalise une recherche exhaustive d entiers frères dans un intervalle [a..b]. 1 Stratégie naïve 1.1 Stratégie naïve 1

Unisciel algoprog Fraternité d entiers / th08 2 Entiers frères Deux entiers positifs sont dits frères si chaque chiffre différent (entier dans [0..9]) qui constitue l un apparaît au moins une fois dans l autre. Exemple 1288218 et 822112122 sont frères mais 1288218 et 4812 ne le sont pas. Stratégie naïve Pour déterminer si deux entiers sont frères, une stratégie naïve consiste à : 1. Décomposer les deux entiers en la séquence (tableau) de ses chiffres. 2. Calculer le tableau de présence des chiffres de chacun des entiers. 3. Vérifier si ces deux tableaux de présence sont identiques. Exemple Pour chacun des entiers, les tableaux de présence sont (V dénote Vrai ; l absence de valeur signifie Faux) : 0 1 2 3 4 5 6 7 8 9 n1=1288218 V V V n2=822112122 V V V n3=4812 V V V V Comme vp(n1)=vp(n2) donc n1 et n2 sont frères, mais vp(n1)<>vp(n3) donc n1 et n3 ne sont pas frères. 1.2 Tableau de présence Définissez la constante BASEDECIMALE (base décimale) de valeur 10 et le type TabPresence comme étant un tableau de booléens des chiffres [0..9]. Écrivez une procédure initialiserpresence(t) qui initialise à Faux un TabPresence t. Écrivez une procédure calculerpresence(n,t) qui calcule le tableau de présence des chiffres d un entier positif n dans un TabPresence t. Aide méthodologique Initialisez le TabPresence t puis tant que n n est pas nul, récupérez chacun des chiffres u (par un modulo de 10) puis une division par 10 de n et marquez à Vrai, l élément t[u].

Unisciel algoprog Fraternité d entiers / th08 3 1.3 Test de fraternité Écrivez une fonction identiques(t1,t2) qui teste et renvoie Vrai si deux TabPresence t1 et TabPresence t2 sont identiques, Faux sinon. Déduisez une fonction fraternite(n1,n2) qui teste et renvoie Vrai si deux entiers positifs n1 et n2 sont frères, Faux sinon. Écrivez une procédure test_fraternite qui demande et saisit deux entiers (supposés positifs) dans n1 et n2. Affichez l invite : Deux entiers positifs? Calculez et affichez s ils sont frères ou non. Testez. Exemples d exécution. Deux entiers positifs? 1218 82122 Les entiers 1218 et 82122 SONT freres Deux entiers positifs? 82122 4812 Les entiers 82122 et 4812 NE SONT PAS freres 2 Autre stratégie, Version Tableau 2.1 Autre stratégie Autre stratégie Une autre stratégie consiste à : 1. Décomposer les deux entiers en la séquence (tableau) de ses chiffres. 2. Trier la séquence des chiffres de chacun des entiers. 3. Unifier (c.-à-d. supprimer les doublons de) la séquence triée des chiffres de chacun des entiers. 4. Vérifier que les deux séquences unifiées sont identiques.

Unisciel algoprog Fraternité d entiers / th08 4 Exemple La séquence triée de n1=1288218 est [1,1,2,2,8,8,8] et l unification donne [1,2,8]. Celle triée de n2=822112122 est [1,1,1,2,2,2,2,2,8] et l unification donne [1,2,8]. Les deux séquences unifiées de n1 et n2 sont bien identiques. La séquence triée unifiée de n3=4812 est [1,2,4,8]. Les séquences unifiées de n1 et n3 sont différentes. 2.2 Procédure decomposer Ce problème décompose un entier positif en sa séquence de chiffres (entiers dans [0..9]). Définissez la constante NMAX (taille maximale des tableaux) de valeur 20 puis le type Tableau comme étant un tableau d entiers de taille NMAX. Écrivez une procédure initialiserchiffres(cs,nc) qui initialise un Tableau cs à la séquence vide, l entier nc représentant le nombre de chiffres dans cs. Aide simple Il suffit d initialiser nc à zéro. Écrivez une procédure ajouterchiffre(cs,nc,val) qui ajoute un chiffre de valeur val à la fin d un Tableau cs de nc chiffres. Exemple : Soient: cs=[8,1,2,2], nc=4 Après: ajouterchiffre(cs,nc,6) Ici: cs=[8,1,2,2,6], nc=5 Aide simple Il faut mettre val en fin de cs et modifiez sa longueur nc. Écrivez une procédure decomposer(n,cs,nc) qui décompose un entier positif n en ses chiffres (base 10) dans un Tableau cs et restitue dans l entier nc le nombre de chiffres contenu dans cs. Exemple : Pour 3012 = 2 10 0 + 1 10 1 + 0 10 2 + 3 10 3 la procédure doit initialiser cs avec [2,1,0,3] et l entier nc avec 4.

Unisciel algoprog Fraternité d entiers / th08 5 2.3 Procédure unifiertab (unification d un tableau trié) Ce problème supprime les doublons adjacents dans un Tableau. Exemple : [1,2,2,2,8,9,11,11,20] ==> [1,2,8,9,11,20] Écrivez une procédure unifiertab(t,n) qui unifie (c.-à-d. supprime les doublons) adjacents des n éléments d un Tableau t trié. Attention, le tableau est supposé trié. La procédure modifiera également l entier n qui mémorise le nombre d éléments dans t. 2.4 Fonction identiquestab (égalité de tableaux) On dira que deux Tableau sont identiques s ils ont les mêmes valeurs en même position. Écrivez une fonction identiquestab(t1,t2,n) qui teste et renvoie Vrai si les Tableau t1 et Tableau t2 sont identiques (mêmes valeurs en j), Faux sinon. 2.5 Procédure triselection (tri par sélection) Ce problème effectue le tri par sélection (du maximum) d un Tableau. Écrivez une fonction indicemaximum(t,binf,bsup) qui recherche et renvoie la position d un maximum d un Tableau t[binf..bsup], c.-à-d que la recherche s effectue dans le sous-tableau entre les indices binf et bsup uniquement. Écrivez une procédure triselection(t,n) qui effectue le tri par sélection de n éléments d un Tableau t. La procédure utilise la fonction indicemaximum pour la recherche de l indice d un maximum dans un sous-tableau. 2.6 Test de fraternité Écrivez une procédure unifierseq(n,cs,nc) qui calcule la séquence ordonnée des chiffres d un entier positif n dans un Tableau cs et restitue dans l entier nc la taille de cs.

Unisciel algoprog Fraternité d entiers / th08 6 Écrivez une fonction identiquesseq(cs1,nc1,cs2,nc2) qui teste et renvoie Vrai si deux séquences de chiffres d un Tableau cs1 de longueur nc1 et Tableau cs2 de longueur nc2 sont identiques, Faux sinon. Déduisez une fonction fraternite2(n1,n2) du test de fraternité de deux entiers positifs n1 et n2. Modifiez la procédure test_fraternite de sorte à appeler la fonction fraternite2. Testez. 3 Autre stratégie bis, Version Tableau 3.1 Autre stratégie bis Autre stratégie bis Plutôt que de vérifier que les deux séquences unifiées sont identiques, on peut : 1. Évaluer la valeur d une séquence unifiée de chiffres. 2. Vérifier que les deux entiers sont égaux.

Unisciel algoprog Fraternité d entiers / th08 7 Exemple La séquence triée de n1=1288218 est [1,1,2,2,8,8,8], l unification donne [1,2,8] et sa valeur est donc 128. Celle triée de n2=822112122 est [1,1,1,2,2,2,2,2,8], l unification [1,2,8] fournie la valeur 128. Les deux valeurs des séquences unifiées de n1 et n2 sont bien identiques. La séquence triée unifiée de n3=4812 est [1,2,4,8] de valeur 1248. Les valeurs des séquences unifiées de n1 et n3 sont différentes. 3.2 Fonction evalchiffres Ce problème évalue une séquence de chiffres. Écrivez une fonction evalchiffres(cs,nc) qui calcule et renvoie la valeur de l entier représenté par un Tableau cs de longueur nc en utilisant le schéma de Hörner. Exemple : Pour la séquence de chiffres [2,1,0,3], la fonction doit retourner l entier de valeur 3012. 3.3 Test de fraternité Ce problème utilise la fonction evalchiffres. Écrivez une fonction identiquesseq2(cs1,nc1,cs2,nc2) du test d égalité des séquences de chiffres Tableau cs1 de longueur nc1 et Tableau cs2 de longueur nc2 en utilisant la fonction evalchiffres. Copiez/collez la fonction fraternite2 en la fonction fraternite3(n1,n2) puis modifiezla pour qu elle appelle la fonction identiquesseq2. Modifiez la procédure test_fraternite de sorte qu elle appelle la fonction fraternite3.

Unisciel algoprog Fraternité d entiers / th08 8 Testez. 4 Recherche exhaustive Ce problème réalise une recherche exhaustive d entiers frères. Écrivez une procédure test_recherche qui demande deux entiers positifs dans a et dans b. Affichez l invite : Intervalle a..b pour la recherche? Comptez et affichez tous les entiers frères de l intervalle [a..b]. Aide simple La fraternité est une relation d équivalence : réflexive, symétrique et transitive... Tenez en compte dans le cas du décompte. Testez. Sont-ils nombreux?