PROJET ALGORITHMIQUE ET PROGRAMMATION II



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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Les structures. Chapitre 3

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

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

Chap III : Les tableaux

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

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

Bases de programmation. Cours 5. Structurer les données


Licence Sciences et Technologies Examen janvier 2010

UE C avancé cours 1: introduction et révisions

Algorithme. Table des matières

TP 1. Prise en main du langage Python

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Algorithmique et Programmation, IMA

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les chaînes de caractères

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

UE Programmation Impérative Licence 2ème Année

Programmation C. Apprendre à développer des programmes simples dans le langage C

Introduction au langage C

Informatique Générale

Conventions d écriture et outils de mise au point

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

Compression de Données - Algorithme de Huffman Document de Conception

Algorithmique, Structures de données et langage C

1 Introduction au codage

Programmation impérative

B2i Brevet Informatique. Internet. Livret de l enseignant

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

PROJET MULTIMEDIA 2005/2006

Présentation du langage et premières fonctions

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Ouvrir le compte UQÀM

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Transmission d informations sur le réseau électrique

Les structures de données. Rajae El Ouazzani

Résumé succinct des fonctions de messagerie électronique

Poste dédié compatible. Mémento poste

nom : Collège Ste Clotilde

Chapitre 1 : La gestion dynamique de la mémoire

La mémoire. Un ordinateur. L'octet. Le bit

Rappels Entrées -Sorties

Documentation pour l envoi de SMS

Manuel de l'application SMS

LISTES DE DISTRIBUTION GÉRÉES PAR SYMPA DOCUMENT EXPLICATIF DE L'INTERFACE WEB À L'INTENTION DES ABONNÉS

Module http MMS AllMySMS.com Manuel d intégration

TP, première séquence d exercices.

Le langage C. Séance n 4

Exécutif temps réel Pierre-Yves Duval (cppm)

GESTION DES FICHIERS C/UNIX

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Structure fonctionnelle d un SGBD

Initiation à Excel. Frédéric Gava (MCF)

Utilisation d objets : String et ArrayList

Gest'Help Nouveautés annuelles

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Représentation d un entier en base b

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

Utilisation du client de messagerie Thunderbird

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

Utiliser le service de messagerie électronique de Google : gmail (1)

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

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

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

Qu est-ce que le relevé de compte?

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

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Qu est ce qu un ?

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

I. Introduction aux fonctions : les fonctions standards

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Projet Active Object

Puissances d un nombre relatif

Cahier des charges Remontée des ventes

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à MATLAB R

IV- Comment fonctionne un ordinateur?

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Cours 1: Java et les objets

Structure d un programme

Approche Contract First

Initiation. àl algorithmique et à la programmation. en C

Cours d Informatique

Utiliser ma messagerie GMAIL

SAS Foundation Installation sous Windows

Premiers Pas en Programmation Objet : les Classes et les Objets

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

La gestion des boîtes aux lettres partagées

Indications pour une progression au CM1 et au CM2

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Transcription:

PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du projet

Le service de messagerie SMS, plus connu sous le sigle de SMS (Short Message Service) ou les noms de texto ou de «mini message», permet de transmettre de courts messages textuels. C est l un des services de la téléphonie mobile. 2 1) La taille des SMS En fonction des caractères utilisés lors de l écriture d un SMS, la taille du SMS peut être modifiée. a) Les caractères standards : La taille d un SMS rédigé avec des caractères standards est de 160 caractères. Les 26 lettres de l alphabet en majuscule et en minuscule ainsi que l ensemble des caractères suivants sont des caractères standards. Tous ces caractères comptent pour 1 seul : @ $ è é ù ì ò Ç Ø ø Å å Δ _ Φ Γ Λ Ω Π Ψ Σ Θ Ξ ^ [ ~ ] Æ æ ß É! " # % & ' ( ) * +,. / 0 1 2 3 4 5 6 7 8 9 : ; < = >? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ä Ö Ñ Ü a b c d e f g h i j k l m n o p q r s t u v w x y z ä ö ñ ü à b) Les caractères spéciaux : Une extension du langage SMS permet de coder certains caractères mais ils comptent pour 2 caractères, ce sont les caractères spéciaux. Ce sont tous les caractères qui ne figurent pas dans la liste ci-dessus. Par exemple Š OE... Lorsque vous utilisez un caractère spécial dans un SMS, le mobile modifie automatiquement le codage de l'intégralité du SMS afin de l'envoyer correctement. Ce codage étant plus gourmand en octets, le nombre de caractères maximum du SMS passe à 70 au lieu de 160. Certains mobiles transforment "intelligemment" certains caractères, par exemple, le "ç" peut être transformé en "Ç" pour éviter de passer en codage plus gourmand.

2) Les SMS longs Lorsque la taille maximum d'un SMS est atteinte, un deuxième SMS est commencé et ainsi de suite. Les SMS sont ensuite «concaténés» pour être affichés dans le bon ordre et dans un seul message par le mobile récepteur. Chaque SMS qui compose ainsi le message est facturé en fonction de votre offre tarifaire. Exemple : Si un message avec des caractères standards contient 186 caractères, votre message est envoyé donc en 2 SMS. a) Règles pour les SMS longs rédigés avec des caractères standards : A partir du 2 ème SMS, le nombre maximum de caractères de chaque SMS concaténé diminue car 7 caractères sont utilisés pour la concaténation. La nouvelle taille maximum de chaque SMS dans un message long est donc de 153 caractères au lieu de 160 avec utilisation de caractères standards. Nombre maximum de caractères standards pour : - 1 SMS = 160 caractères - 2 SMS = 306 caractères - 3 SMS = 459 caractères... b) Règles pour les SMS longs avec utilisation de caractères spéciaux : A partir du 2 ème SMS, le nombre maximum de caractères de chaque SMS concaténé diminue car 3 caractères sont utilisés pour la concaténation, la nouvelle taille maximum de chaque SMS dans un message long est donc de 67 caractères (au lieu de 70). Nombre maximum de caractères avec insertion de caractères spéciaux pour : - 1 SMS = 70 caractères - 2 SMS = 134 caractères - 3 SMS = 201 caractères... En pratique, seuls 6 à 8 SMS concaténés par message sont possibles. 3 3) Compteurs de caractères et de SMS : La quasi-totalité des mobiles affiche un «compteur de caractères et/ou un compteur de SMS». Cela vous permet de savoir combien de caractères contient le message que vous rédigez et le nombre de SMS que contient votre message.

a) Exemple pour un SMS rédigé en caractères standards : Le message ci-dessous contient 2 SMS pour 197 caractères. 4 b) Exemple pour un SMS rédigé avec un caractère spécial : Le message ci-dessous contient 2 SMS pour 91 caractères. La taille du SMS s'est adaptée automatiquement suite à la saisie d'un caractère spécial "ç". L'afficheur indique 134 caractères disponibles. On se propose de programmer une application en C de gestion de messages et de contacts. Le code du fichier ELTSMS.H qui permet de réaliser le TDA ELEMENT_SMS par une structure SMS (Un SMS est caractérisé par un texte (chaîne de caractères) et une taille (entier) : stockage indirect), est défini comme suit : #ifndef _ELTSMS_H #define _ELTSMS_H char * texte; int taille; SMS,*ELEMENT_SMS;

Le code du fichier LSTSMS.H qui permet de réaliser le TDA LISTE_SMS par une structure de données LISTE_SMS (liste contiguë de SMS en stockage indirect), est défini comme suit : #ifndef _LSTSMS_H #define _LSTSMS_H #include "ELTSMSPRIM.H" #define LongMax 8 /* longueur maximale d'une liste de SMS */ ELEMENT_SMS elements[longmax]; /* tableau statique */ int lg; /* taille logique de la liste */ lastructsms,*liste_sms; 5 Un MESSAGE est caractérisé par : Le numéro de téléphone du récepteur : une chaîne de 8 caractères ne contenant que des chiffres et commençant obligatoirement par l un des chiffres 2, 5 ou 9 qui correspondent aux opérateurs téléphoniques en Tunisie. L ensemble du/des SMS le composant : une liste contigüe de SMS. Le chargement (allocation dynamique des caractères) des SMS se fait au moment de la lecture du message et ce en le découpant selon les caractères standards et/ou spéciaux le composant en y appliquant les règles décrites précédemment. Le prix total du message : un réel qui correspond au prix d un SMS multiplié par le nombre des SMS composant le message. On suppose que le prix d un SMS est de l ordre de 0.050 en DT vers tous les opérateurs. La date d envoi du message : une chaîne de caractères dont le format est jj/mm/aaaa. La date d envoi devrait être impérativement valide et antérieure /identique à la date du système. L heure d envoi du message : une chaîne de caractères dont le format est hh:mm:ss. L heure d envoi devrait être valide et comprise entre 00:00:00 et 23:59:59.

6 Le code du fichier ELTMSG.H qui permet de réaliser le TDA ELEMENT_MSG par une structure MESSAGE (stockage indirect), est défini comme suit : #ifndef _ELTMSG_H #define _ELTMSG_H #include "LSTSMSPRIM.H" int jour; int mois; int annee ; DATE ; int heure; int minute; int seconde; HEURE; char recpeteur[9]; LISTE_SMS msg ; float prix ; DATE date_envoi ; HEURE heure_envoi ; MESSAGE,*ELEMENT_MSG;

Le code du fichier LSTMSG.H qui permet de réaliser le TDA LISTE_MSG par une structure de données LISTE_MSG (liste doublement chaînée de MESSAGE), est défini comme suit : #ifndef _LSTMSG_H #define _LSTMSG_H #include "ELTMSGPRIM.H" structnoeudmsg ELEMENT_MSG info; struct structnoeudmsg * suivant; struct structnoeudmsg * precedent; structnoeudmsg, * NOEUD_MSG; NOEUD_MSG tete; NOEUD_MSG queue; int lg; lastructmsg,*liste_msg; Le code du fichier ELTCON.H qui permet de réaliser le TDA ELEMENT_CONT par une structure CONTACT (Un contact est caractérisé par un nom (chaîne de caractères alphabétiques), un numéro (une chaîne de 8 caractères ne contenant que des chiffres et commençant obligatoirement par l un des chiffres 2, 5 ou 9 qui correspondent aux opérateurs téléphoniques Tunisiens), une adresse email (une chaîne de caractères contenant le caractère séparateur @ et un nom de domaine) : stockage indirect), est défini comme suit : #ifndef _ELTCON_H #define _ELTCON_H char nom[50]; char numero[9]; char email[30]; CONTACT,*ELEMENT_CONT; 7

Le code du fichier LSTCON.H qui permet de réaliser le TDA LISTE_CONT par une structure de données LISTE_CONT (liste simplement chaînée de CONTACT), est défini comme suit : #ifndef _LSTCON_H #define _LSTCON_H #include "ELTCONPRIM.H" structnoeudcont ELEMENT_CONT info; struct structnoeudcont * suivant; structnoeudcont, * NOEUD_CONT; NOEUD_CONT tete; int lg; lastructcont,*liste_cont; 8 L utilisateur dispose ainsi d un répertoire (Une liste simplement chaînée de CONTACTS) et d une boîte de messages (Une liste doublement chaînée de MESSAGES dont chacun contient une liste contigüe de SMS). L ajout d un nouveau CONTACT au répertoire se fait dans l ordre alphabétique des noms des contacts. L ajout d un nouveau MESSAGE à la boîte de messagerie se fait dans l ordre chronologique (date et heure d envoi). C est le message le plus récent qui apparaît à la tête de la liste et c est celui le plus ancien qui apparait à sa queue. Au moment de l envoi d un MESSAGE, l utilisateur peut taper un numéro de téléphone qui ne figure pas dans la liste des CONTACTS. L affichage d un MESSAGE se fait comme indiqué dans les figures ci-dessus.

Travail demandé : Implémentez les TDA ELEMENT_SMS, LISTE_SMS, ELEMENT_MSG, LISTE_MSG, ELEMENT_CONT et LISTE_CONT. Ecrire une fonction CONTACT lepluscontacte(liste_msg L1, LISTE_CONT L2) qui permet de renvoyer le contact du répertoire auquel le plus grand nombre de messages a été envoyé (en cas de redondance c est le premier contact alphabétiquement apparu qui sera retourné). Ecrire une fonction LISTE_CONT jamaiscontactes(liste_msg L1, LISTE_CONT L2) qui permet de renvoyer la liste des contacts auxquels aucun message n a jamais été envoyé. Ecrire une fonction LISTE_MSG messages_d1_d2(liste_msg L, DATE D1, DATE D2) qui permet de renvoyer tous les messages qui ont été envoyés entre les dates D1 et D2. Ecrire une fonction ELEMENT_MSG messagelepluslong(liste_msg L) qui retourne le message envoyé le plus long en terme de caractères. Ecrire une fonction char * motleplusoccurrent(liste_msg L, char * nom) qui renvoie le mot le plus récurrent dans tous les messages envoyés à un destinataire dont le nom est donné. Créez un fichier main.c pour manipuler les TDA implémentés via des menus. Il vous faut au minimum trois menus dont un est principal et deux autres pour les MESSAGES et les CONTACTS. 9