TP de Programmation en C
n°2
Les pointeurs, les tableaux, les structures, les opérateurs %, <<, >>
http://www-sop.inria.fr/oasis/personnel/Carine.Courbis/c/
IUT GTR Sophia Antipolis
Nov 2000
Recommandations importantes :
Exercice 1 (fichier
primPoin.c)Cet exercice n'a pas vraiment de sens mais il permet de se familiariser avec les pointeurs de types primitifs.
Algorithme
Définir une variable
Déclarer deux pointeurs
pVar1 et pVar2 de ce type primitifIndiquer que
pVar1 pointe sur varAjouter 2 à
var (en utilisant pVar1 et non var)Affecter
pVar1 à pVar2Ajouter 5 à la variable pointée par
pVar2Afficher les adresses des trois variables, puis leurs contenus et enfin les valeurs pointées par
pVar1
et pVar2Exercice 2 (
binToDec.c)Ecrire un programme qui convertit une chaîne contenant la représentation binaire d'un nombre en un décimal non signé.
Indications
Modifier la constante indiquant la taille de la chaîne. Testez si votre programme fonctionne toujours.
Exercice 3 (
decToBin.c)Ecrire le programme inverse (i.e. conversion d’un décimal non signé en une chaîne contenant sa représentation binaire).
Indications
Exercice 4 (
repTel.c)Ecrire un programme permettant de gérer un répertoire non ordonné de numéros de téléphone.
Indications
Voilà des prototypes des fonctions à implanter
/* Remplit le tableau tab de caractères tapés au clavier jusqu'au caractère retour chariot exclus. Au maximum (taille-1) caractères sont mis dans le tableau tab. Le caractère null est ajouté à la fin pour en faire une chaîne.
Paramètres : tab un tableau de 'taille' éléments qui sera rempli avec les caractères saisis
taille le nombre d’éléments max du tableau tab
*/
void saisieChaine(char tab[], int taille) ;
/* Recherche dans le répertoire l'indice du tableau de la personne donnée.
Paramètres: nom, prenom (nom et prénom de la personne à rechercher)
Retour : l'indice de la personne si elle est dans le répertoire, -1 sinon
*/
static int getIndicePersonne(char * nom, char * prenom) ;
/* Ajoute la nouvelle personne au répertoire téléphonique. Si le répertoire est plein, affiche un message d'erreur pour l'indiquer et retourne FALSE.
Paramètre : pers (la personne à ajouter dans le répertoire)
Retour : TRUE si la personne a été ajoutée dans le répertoire, FALSE sinon.
*/
Boolean setPersonneDansRep(Personne pers) ;
/* Enlève la personne donnée du répertoire si elle est présente ; sinon affiche un message d’erreur pour avertir l’utilisateur.
Parametres : nom, prenom (nom et prenom de la personne dela enlever)
Retour : TRUE si la personne a pu être enlevée, FALSE sinon
*/
Boolean enlevePersonneDuRep(char * nom, char * prenom) ;
/* Saisie du nom, prénom et numéro de téléphone d'une personne (si le premier digit du numéro est zéro, il est enlevé).
Retour : les infos de la personne à ajouter au répertoire
*/
Personne saisiePersonne()
/* Retourne le numéro de téléphone (sur 9 chiffres normalement i.e. sans le digit indiquant l’opérateur téléphonique) de la personne donnée. Si la personne n'est pas dans le répertoire, retourne 0
Paramètres : nom, prenom (nom et prénom de la personne recherchée)
Retour : le numéro de la personne recherchée si présente dans le répertoire, 0 sinon.
*/
unsigned long getNumero(char * nom, char * prenom) ;
/* Affiche le contenu du répertoire i.e. la liste des personnes avec leur numéro de téléphone (ajoute le digit indiquant l’opérateur téléphonique présélectionné devant le numéro de téléphone).
Si le répertoire est vide, indique que le répertoire est vide.
*/
void afficherRepertoire() ;
Il faudra utiliser la fonction