Corrigé des exercices avancés sur les structures récursives



Documents pareils
Corrigé des exercices sur les références

Premiers Pas en Programmation Objet : les Classes et les Objets

Corrigés des premiers exercices sur les classes

Programmation avec des objets : Cours 7. Menu du jour

Projet de programmation (IK3) : TP n 1 Correction

Utilisation d objets : String et ArrayList

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

Java Licence Professionnelle CISII,

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TD3: tableaux avancées, première classe et chaînes

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Chapitre 10. Les interfaces Comparable et Comparator 1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Objets et Programmation. origine des langages orientés-objet

Programmation Par Objets

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Package Java.util Classe générique

Programme Compte bancaire (code)

Programmer en JAVA. par Tama

Les structures de données. Rajae El Ouazzani

TD/TP PAC - Programmation n 3

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Programmation par les Objets en Java

Arbres binaires de recherche

Solutions du chapitre 4

Analyse détaillée des trajets effectués en Transports en commun en Ile-de-France

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Un ordonnanceur stupide

TD/TP PAC - Programmation n 3

# 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>

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Recherche dans un tableau

Design patterns. Design patterns - définition. Design patterns - avantages

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation en Java IUT GEII (MC-II1) 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Chapitre VI- La validation de la composition.

Tp 1 correction. Structures de données (IF2)

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Master d Informatique Corrigé du partiel novembre 2010

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Plan du cours. Historique du langage Nouveautés de Java 7

Mardi 27 mars Dossier de presse BILAN 2011 DU RESEAU IDELIS

Le réseau TCL ne fonctionne pas le 1er mai. - Lundi au Vendredi : 7h30-18h30 - Samedi : 9h00-17h00 - Fermée le dimanche

Dis papa, c est quoi un bus logiciel réparti?

Introduction : les processus. Introduction : les threads. Plan

Programmation Orientée Objet Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Informatique III: Programmation en C++

2. Comprendre les définitions de classes

ACTIVITÉ DE PROGRAMMATION

Les arbres binaires de recherche

Auto-évaluation Programmation en Java

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

ORGANISATION SAINT SULPICE VELO SPORT Route d Azas Saint Sulpice : jean-claude.cayrol31@orange.

Threads. Threads. USTL routier 1

Les territoires ruraux prennent leur avenir en main! Des campagnes innovantes au cœur de la métropolisation. Tramway : LIEU DE LA MANIFESTATION

Applet pour visualiser les variables «automate» notifiées

Programmation Orientée Objet

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Université Kasdi Merbeh Ouargla FSSI/ Département des maths et de l informatique Corrigé type TD N 8 de ASD2 (Les Graphes)

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Examen Médian - 1 heure 30

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

TP1 : Initiation à Java et Eclipse

Introduction au langage C

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

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

Introduction à la programmation concurrente

Langage Java. Classe de première SI

Plateforme PAYZEN. Définition de Web-services

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

RMI le langage Java XII-1 JMF

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Bases Java - Eclipse / Netbeans

STAGE IREM 0- Premiers pas en Python

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Conventions d écriture et outils de mise au point

Une introduction à Java

MES ÉCO-DÉPLACEMENTS LE QUIZZ

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Viroflay Gare Chaville-Vélizy é Vélizy-Villacoublay Vélizy 2

11 décembre 2013 à partir de 14h OOSTEZ. vos déplacements! Nouveau! Gare d Oullins Part-Dieu MÉDIACITÉ

Politique de remboursement pour la conférence annuelle du CATON Concernant les DÉPENSES DE VOYAGE DES PARTICIPANTS

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Transcription:

Corrigé des exercices avancés sur les structures récursives Exercice 8.3.1 utilisation de listes 1. Ecrire une méthode qui calcule la somme des éléments positifs d une liste d entiers. 2. Ecrire une méthode qui vérifie si une liste est triée en ordre croissant. public class ListeEntier { private int valeur; private ListeEntier suivant; public ListeEntier(int val, ListeEntier suiv) { public ListeEntier(int val) { this.suivant = null; public int getvaleur() { return valeur; public void setvaleur(int val) { public ListeEntier getsuivant() { return suivant; public void setsuivant(listeentier suiv) { public void affiche(){ Terminal.ecrireString(valeur + " "); if (suivant!= null) suivant.affiche(); else Terminal.sautDeLigne(); int sommepositif(){ int somme = 0; ListeEntier aux = this; 1

if (aux.getvaleur()>0){ somme = somme + aux.getvaleur(); return somme; boolean esttriee(){ ListeEntier aux = this; if (aux == null){ int derniervu = aux.getvaleur(); if (aux.getvaleur() < derniervu){ derniervu = aux.getvaleur(); ListeEntier lal = new ListeEntier(4); lal= new ListeEntier(3,lal); lal= new ListeEntier(2,lal); lal= new ListeEntier(-1,lal); Terminal.ecrireIntln(lal.sommePositif()); Terminal.ecrireBooleanln(lal.estTriee()); lal= new ListeEntier(5,lal); Terminal.ecrireIntln(lal.sommePositif()); Terminal.ecrireBooleanln(lal.estTriee()); Exercice 8.3.2 égalité de structures récursives 1. écrire une méthode qui teste si deux courses de la même saison ont le même classement. 2. écrire une méthode qui teste si deux courses de deux saisons différentes ont le même classement. On ne doit pas tenir compte du dossard. 3. écrire une méthode qui teste si deux courses ont le même podium (trois premiers arrivés). public class Coureur{ private String nom; private int dossard; private Coureur suivant; public Coureur(String n, int d, Coureur suiv) { this.nom = n; 2 NFA032 c CNAM 2012

this.dossard = d; public String getnom() { return nom; public int getdossard() { return dossard; public Coureur getsuivant() { return suivant; public boolean memeclassement(coureur autre){ Coureur cl1 = this; Coureur cl2 = autre; boolean different = false; while (cl1!= null && cl2!= null &&!different){ if (!cl1.getnom().equals(cl2.getnom())) different = true; else{ cl1=cl1.getsuivant(); cl2=cl2.getsuivant(); if (different) //coureurs differents a une position else if (cl1!= null) // plus de coureurs dans this else if (cl2!= null) // plus de coureurs dans autre else // meme longueur public boolean memepodium(coureur autre){ int i = 3; Coureur cl1 = this; Coureur cl2 = autre; boolean different = false; while (cl1!= null && cl2!=null && i>0 &&!different){ if (!cl1.getnom().equals(cl2.getnom())) different = true; else{ cl1=cl1.getsuivant(); cl2=cl2.getsuivant(); i = i-1; if (i!=0) // une des deux courses a moins de trois coureurs else if (different) // un des trois premiers est different else NFA032 c CNAM 2012 3

public void afficheclassement(){ int rang = 1; Coureur aux = this; Terminal.ecrireStringln(rang + ": " + aux.getdossard() + " " + aux.getnom()); rang++; Coureur c1 = new Coureur("donald",125,null); c1 = new Coureur("picsou",103,c1); c1 = new Coureur("fifi",129,c1); c1 = new Coureur("loulou",155,c1); c1 = new Coureur("riri",157,c1); Coureur c2 = new Coureur("fifi",77,null); c2 = new Coureur("loulou",55,c2); c2 = new Coureur("riri",12,c2); c1.afficheclassement(); Terminal.sautDeLigne(); c2.afficheclassement(); Terminal.ecrireBooleanln(c1.memeClassement(c2)); Terminal.ecrireBooleanln(c1.memePodium(c2)); Exercice 8.3.3 voyage On veut représenter un itinéraire comme une suite de moyens de transports publics à emprunter (métro, bus, train, autocar, avion) avec éventuellement des transitions à pied. Sur cet itinéraire, il y a des lieux représentés par le nom de la ville et un complément qui peut-être le nom d une gare, d une station de métro, d un arrêt de bus ou une adresse. On va représenter les lieux au moyen d objets d une classe des lieux et les liaisons entre lieux au moyen d objets d une autre classe. Une liaison comprendra le type de transport, la distance et éventuellement, les heures de départ et d arrivée si cela a un sens pour le moyen de transport considéré. Par exemple, un train ou un avion ont des horaires précis, mais un métro ou la marche à pied n ont pas d horaire précis. Un itenéraire va être une structure contenant alternativement des lieux et des liaisons (un lieu, une laison, un lieu, une liaison, un lieu, etc). Ecrivez les classes nécessaires avec une méthode d affichage d un itinéraire. Ecrivez une méthode main pour prendre le cas d une marche à pied du 3 rue Conté, 75003 Paris à la station de métro République (Paris), puis la ligne 5 jusqu à gare du Nord et le train de 18H17 de Paris à Lille, avec affichage de cet itinéraire. class Lieu{ String ville; String detail; Liaison liaison; Lieu(String v, String d, Liaison l){ 4 NFA032 c CNAM 2012

ville=v; detail=d; liaison=l; Terminal.ecrireStringln(ville + " " + detail); if (liaison!=null) liaison.afficher(); class Liaison{ String type; double dist; Lieu destination; Liaison(String t, double d, Lieu l){ type=t; dist=d; destination=l; Terminal.ecrireStringln(" " + type + " " + dist + " km"); destination.afficher(); Lieu lelieu; Liaison trajet; lelieu=new Lieu("Lille","gare SNCF",null); trajet=new LiaisonHoraire("train",220,lelieu,"18h17","19h23"); lelieu=new Lieu("Paris","gare du Nord",trajet); trajet=new Liaison("métro ligne 5",3.2,lelieu); lelieu=new Lieu("Paris","station Republique",trajet); trajet=new Liaison("a pied",1.1,lelieu); lelieu=new Lieu("Paris","2 rue Conté",trajet); lelieu.afficher(); class LiaisonHoraire extends Liaison{ String depart, arrivee; LiaisonHoraire(String t, double d, Lieu l, String h1, String h2){ super(t,d,l); depart=h1; arrivee=h2; Terminal.ecrireString(" " + type + " " + dist + " km depart "); Terminal.ecrireStringln(depart + " arrivee " + arrivee); destination.afficher(); NFA032 c CNAM 2012 5