• Aucun résultat trouvé

INFORMATIQUE 4

N/A
N/A
Protected

Academic year: 2022

Partager "INFORMATIQUE 4"

Copied!
76
0
0

Texte intégral

(1)

19/03/2020

1

INFORMATIQUE 4

Algorithmique et Structures de Données Par Mme El khattabi

2019/2020

1

(2)

19/03/2020

2

Plan du cours

1. Introduction à l'algorithmique & rappels 2. Fonctions récursives

3. Les structures

4. Listes linéaires chaînées 5. Piles et Files

6. Arbres binaires

7. Arbres binaires de recherche 8. Tables de hachage

9. Graphes

2

(3)

19/03/2020

3

Rappels et compléments de C

3

(4)

19/03/2020

4

4

Algorithme

• Permet de résoudre un problème donné

ex: Trier une liste de noms par ordre alphabétique

Définition. Un algorithme est une

procédure de calcul bien définie qui prend en entrée un ensemble de valeurs et qui délivre en sortie un ensemble de valeurs.

(5)

19/03/2020

5

5

Algorithme informatique

=

procédure de calcul

Algorithme

Informations en entrée

Informations en sortie

(6)

19/03/2020

6

Algorithme

• Séquence d'instructions élémentaires

Se termine en un temps fini

prend une ou des valeur(s) en entrée donne une ou des valeur(s) en sortie

6

(7)

19/03/2020

7

Algorithme

Définition .Une valeur particulière de

l'ensemble des valeurs données en entrée est appelée instance du problème.

Définition .Un algorithme est correct si pour toute instance du problème il se termine et produit une sortie correcte.

7

(8)

19/03/2020

8

Algorithme

Les ordinateurs ne comprennent que quatre catégories d'instructions :

1.l'affectation de variables ; 2.la lecture/écriture ;

3.les tests (les structures conditionnelles) ; 4.les boucles (les structures itératives).

8

(9)

19/03/2020

9

9

Exemple

• Exemple de problème à résoudre

Comment trier une liste d'élèves par ordre alphabetique?

• donnée: liste non triée

• sortie: liste triée

• Algorithme: ???

(10)

19/03/2020

10

Algorithme et programme

• Programme :

codage d’un algorithme afin que l’ordinateur puisse exécuter les actions décrites

doit être écrit dans un langage compréhensible par l’ordinateur

langage de programmation

• Un programme est donc une suite ordonnée d’instructions élémentaires codifiées dans un langage de programmation

10

(11)

19/03/2020

11

11

Algorithme et Programme

• Un algorithme est implémenté dans un langage de programmation

• Un même algorithme peut être implémenté dans différents langages

• Pseudo-code

(12)

19/03/2020

12

12

Structure de Données

• Moyen de stocker et organiser les données d'un algorithme

accès aux données

modification des données

• Tableaux, listes chaînées

• Piles, files

• Graphes, arbres

(13)

19/03/2020

13

13

Structures de contrôle

• Structures de contrôle conditionnelle

Si cond Alors instr FinSi

Si cond Alors instr sinon instr FinSi (imbrications possibles)

Structures de contrôle itératives

TantQue cond Faire instr FinTantQue variantes

(imbrications possibles)

(14)

19/03/2020

14

La structure de contrôle conditionnelle

• La structure de contrôle conditionnelle se présente en général sous la forme :

si expression alors

première séquence d'instructions sinon

deuxième séquence d'instructions finsi

14

(15)

19/03/2020

15

15

La boucle " tant que "

• Fait répéter une séquence d’instructions aussi longtemps qu’une condition est VRAI

Tant que condition faire séquence d’instructions Fin tant que

(16)

19/03/2020

16

La boucle " pour faire"

• Lorsque le nombre d’itération est connu

• Exemple de la table de multiplication

pour var_de_crtde prem_val à dern_val faire séquence d'instructions

finpour

16

(17)

19/03/2020

17

Autres règles

Contraintes imposées par le langage

Toute variable apparaissant dans le bloc d'instructions doit être déclarée.

Contraintes imposées par l'usage

Tout programme doit être commenté !

Un commentaire est du texte encadré par des symboles de début /* et de fin */ ou une ligne commençant par //

Ignoré lors des traitements du programme

/* teste si un entier est un carré parfait */

int i = 0; // sert d’indice dans la boucle

17

(18)

19/03/2020

18

Bloc déclaration

type nom_variable ;

Syntaxe

Nom_variable est un identificateur :

les caractères sont les lettres (A..Z,a..z) et les chiffres 0..9 et le soulignement (pas de caractères spéciaux, pas de blancs)

ne commence pas par un chiffre

minuscules et majuscules sont différentes M≠m

Déclarer une variable sert à

désigner son nom

spécifier le domaine des valeurs que peut «contenir » cette variable

18

(19)

19/03/2020

19

Types

• Généralités

Un type est un nom pour un ensemble de valeurs.

Un type est muni d'opérateurs.

Déclarer une variable sert aussi à connaître les opérateurs applicables à (la valeur de) la variable

• Les types entiers: int, char

• Les types réels: float, double

• Type booléen: Le booléen faux est représenté par l’entier 0, et le booléen vrai par tout entier

différent de 0. , le OU : et le NON :

19

(20)

19/03/2020

20

20

Contractions d'opérateurs

• Il y a une famille d’opérateurs

+= -= *= /= %=

Pour chacun d’entre eux

expression1 op= expression2 est équivalent à:

(expression1) = (expression1) op (expression2)

(21)

19/03/2020

21

Opérateurs arithmétiques en C

De plus, il existe un opérateur de "modulo" noté %qui ne peut porter que sur des entiers et qui fournit le reste de la division de son premier opérande par son second. Par exemple: 11%4 vaut 3 et 23%6 vaut 5

Remarque: le quotient de deux entiersfournit un entier. Ainsi 5/2 vaut 2; en revanche, le quotient de deux flottants (noté, lui aussi, /) est bien un flottant (5.0/2.0 vaut bien approximativement 2.5).

Opérateurs et Expressions

21

(22)

19/03/2020

22

Priorités des opérateurs

( )

- ! Opérateurs unaires, ex, -a !a

* / %

+ -

< <= > >=

== !=

&& ||

=

Dans le cas où les opérateurs ont la même priorité, l’expression est évaluée de gauche à droite.

22

(23)

19/03/2020

23 Opérateurs d’incrémentation et de décrémentation ( ++ - - )

++i : expression qui incrémente de 1 la valeur de i, et sa valeur est celle de i après incrémentation

On dit que ++est:

-un opérateur de pré incrémentationlorsqu'il est placé à gauche -un opérateur de post incrémentationlorsqu'il est placé à droite

Opérateurs et Expressions

23

(24)

19/03/2020

24

Operateur Conditionnel

• c = a < b ? a + 1 : b – 1;

• Evalue la première expression. Si vrai, evalue la deuxième, sinon evalue la troisième.

24

(25)

19/03/2020

25

Casting

( type_name ) expression

float f, frac_part;

frac_part = f – (int) f;

float quotient;

int dividend, divisor;

quotient = (float) dividend / divisor;

25

(26)

19/03/2020

26

Instructions d’entrée-sortie

scanf("FORMAT", &nom_variable);

Permet de saisir (lire) des données tapées au clavier

FORMAT permet de spécifier le type de la variable lue. Par exemple,

"%d" pour un entier, "%f" pour un réel

Exemple

int I;

scanf ("%d",&I) ; Lecture d’un caractère:

getchar lit un caractère

putchar affiche un caractère

exemple:

int c;

c = getchar();

putchar(c); /* affiche la valeur de c à l’écran */

26

(27)

19/03/2020

27

Instructions d’entrée-sortie

printf("FORMAT", expression)

printf("FORMATS", liste d'expressions)

permet d'afficher des valeurs (résultats de calcul)à l'écran.

Exemples

float res = 2.2+1.05;

int I =1 ; //la valeur de Iest 1 printf("%d", I) ; //affichage de 1à l'écran printf("%d", 5+7) ; //affichage de 12 à l'écran printf("valeur de I= %d", I) ; //affichage de valeur de I= 1

printf("pour I= %d res=%f", I, res) ; //affichage de pour I=1 res=3.25

27

(28)

19/03/2020

28

Conditionnelle

if(condition) instruction1 ; if(condition);

instruction1 ;

condition est une expression booléenne L'exécution de l'instruction globale

évalue la condition

si la condition est vraie, exécute l'instruction 1.

Attention : si la condition est fausse, il ne se passe rien.

Exemple N = 4 ; I=2;

if(N==I*I)

printf("L'entier %d est un carré parfait", N);

Affichage à l'écran de : L'entier 4 est un carréparfait

28

(29)

19/03/2020

29

Conditionnelle

if(condition) instruction1; elseinstruction2;

Permet d'introduire des branchements d'instructions.

L'exécution de l'instruction globale évalue la condition

si la condition est vraie, exécute l'instruction 1 sinon exécute l'instruction 2.

Exemple N = 5; I=2;

if(N= =I*I) printf("L'entier %d est un carre parfait", N);

else printf("L'entier %d n'est pas un carre parfait", N);

Affichage à l'écran de L'entier 5 n'est pas un carre parfait

29

(30)

19/03/2020

30

Conditionnelle

if(condition) bloc-instruction1 else bloc-instruction2

Un bloc d'instructions est une liste d'instructions encadrée par {et }

Exemple N = 5 ;

if(N % 2 = =0) printf("%d est pair", N);

else {

N = N-1 ;

printf("%d est pair", N);

}

Affichage à l'écran : 4 est pair

30

(31)

19/03/2020

31

31

if imbriqués

else est associé avec le if le plus proche

int i = 100;

if(i > 0)

if(i > 1000)

printf("i > 1000\n");

else

printf(“else \n");

(32)

19/03/2020

32

if imbriqués

32

int i = 100;

if(i > 0) {

if(i > 1000)

printf(" i> 1000 \n");

} else

printf(“i est negative\n“);

(33)

19/03/2020

33

Conditionnelle

switch (expression) {

case expression-constante : bloc-instruction 1; break;

case expression-constante : bloc-instruction 2; break;

...

case expression-constante : bloc-instruction n; break;

default: bloc-instruction;

}

le cas default est facultatif.

L'instruction break provoque une sortie immédiate du switch

33

(34)

19/03/2020

34

Conditionnelle

Exemple N=5

switch(N%2) {

case1 : printf("%d est impair", N) ; break;

case0 : printf("%d est pair", N) ; }

Exemple switch(C) {

case ‘0’ : case ‘2’ : case ‘4’ : case ‘6’ : case ‘8’ :

printf("%d est le code d’un chiffre pair" , C); break;

case ‘1’ : case ‘3’ : case ‘5’ : case ‘7’ : case ‘9’ :

printf("%d est le code d’un chiffre impair", C); break;

default:

printf ("%d n’est pas le code d’un chiffre, c’est %c", C, C);

}

34

(35)

19/03/2020

35

Instructions de contrôle boucle do…while

Syntaxe

do

instruction while(condition);

L’instruction peut être simple ou un bloc.

Si la condition est vraie, l’instruction de la boucle est ré- exécutée.

L’instruction sera exécutée au moins une fois.

35

(36)

19/03/2020

36

Instructions de contrôle boucle do…while

• Ecrire un programme qui impose à l’utilisateur de donner un nombre entre 1 et 10

36

(37)

19/03/2020

37

37

int a;

do {

printf("\n Entrezun entier entre 1 et 10 : ");

scanf("%d",&a);

}

while ((a <=0) || (a > 10))

saisie au clavier un entier entre 1 à 10

Instructions de contrôle boucle

do…while

(38)

19/03/2020

38

Instructions de contrôle boucle while

Syntaxe

while(condition) instruction

L’instruction peut être simple ou un bloc.

Si la condition est vraie, l’instruction de la boucle est exécutée.

La condition est évaluée au début de la boucle, donc il est possible que l’instruction dans la boucle ne soit jamais exécutée.

38

(39)

19/03/2020

39

39

i=1;

while(i<5) {

printf(“dans la boule %d\n",i);

i++;

}

printf("Extérieur%d\n",i);

Exemple

(40)

19/03/2020

40

Instructions de contrôle boucle for

Syntaxe

for(expr1; expr2; expr3) instruction

L’instruction peut être simple ou un bloc.

expr1: initialisation avant la 1ièreitération.

expr2: condition qui est évaluée avant chaque itération.

expr3: instruction effectuée à la fin de chaque itération -incrémentation, décrémentation, etc.

40

(41)

19/03/2020

41

41

Les itérations – for

int i,j;

for (i = 0; i <3; i++) {

printf ( "i = %d\n", i);

}

for(j = 3; j > 0; j- -)

printf("j = %d\n", j);

float angle;

for(angle = 0.0; angle < 1.0; angle += 0.2) printf("%6.2f ",angle);

(42)

19/03/2020

42

42

Instructions de branchement non conditionnel

break : vu en switch, en général permet d'interrompre le déroulement d'une boucle, et passe à la première

instruction qui suit la boucle.

int i;

for (i = 0; i < 6; i++)

{ printf("i = %d\n ",i);

if (i==3) break;

}

(43)

19/03/2020

43

43

Instructions de branchement non conditionnel

continue : permet de passer directement de la boucle suivante sans exécuter les autres instructions de la boucle.

int i;

for (i = 0; i < 5; i++) {

if (i==3) continue;

printf("i = %d\n",i);

}

(44)

19/03/2020

44

Récursivité

• Une fonction est récursive si elle s'appelle elle- même.

exemple :

int factoriel ( int n ) {

if ( n <= 1 ) return 1 ; else

return n * factoriel(n-1) ; }

44

(45)

19/03/2020

45

Récursivité

Pour écrire une fonction récursive:

Il faut:

Trouver une condition d’arrêt, c’est-à-dire, un cas où la solution est triviale.

Décomposer le problème non trivial en un problème d’ordre inférieur.

45

(46)

19/03/2020

46

Récursivité : Fibonacci

Un autre exemple classique de récursivité est la suite de Fibonacci :

int fib ( int n ) {

if ( n <= 1 ) return 1 ; else

return fib(n-1)+fib(n-2);

}

46

(47)

19/03/2020

47

Tableaux et pointeurs

• la variable nom tableau contient l'adresse de la première case du tableau.

47

(48)

19/03/2020

48

Pointeurs

• Un pointeur est une variable "pointant " vers un emplacement en mémoire.

• En pratique :

• Un pointeur est une variable qui contient l'adresse mémoire d'une variable.

48

(49)

19/03/2020

49

2 operateurs spécifiques :

& donne l'adresse d'une variable:

char c = 'a';

char *p = &c; /* p est de type (char *) */

*donne la valeur pointée par un pointeur (la valeur à l'adresse correspondante) :

printf("%c", *p); /* affiche a */

Exemples :

int x = 1, y = 2, z[10];

int *pi;

pi = &x;

y = *pi;

*pi = 0;

pi = &z[0]; /* pi=z */

49

(50)

19/03/2020

50

50

(51)

19/03/2020

51

D'autres exemples

Déclarations :

int i=6, b, *p, *pi, t[10]={10,20,30,40,50,60,70,80,90,100};

Affectations et arithmétique :

pi = &i;

p = t;

t = p; /* NON! pas d'affectation de tableau. */

p += i;

p = &t[3];

*pi += 1; /* incrémente *pi */

b = *t+1; /* b=t[0]+1 */

b = *(t+1); /* b=t[1] ... attention aux priorités !*/

un pointeur qui ne pointe sur rien : NULL.

int *p = NULL; 51

(52)

19/03/2020

52

Pointeurs et tableaux

Si on déclare un tableau statique et un pointeur :

int tab[10];

int *p;

alors l'affectation : p=&tab[0] est équivalente a p=tab et *p désigne tab[0].

les crochets sont une simplification d‘écriture : tab[i] , *(tab+i)

Il existe tout de même une différence entre

pointeur et tableau : un nom de tableau n'est pas une variable, on ne peut donc rien affecter a un nom de tableau, contrairement a un pointeur :

tab = p alors que p = tab. 52

(53)

19/03/2020

53

L'operateur sizeof()

L'operateur sizeof() : Renvoie la taille en octets de l'argument (soit un type, soit une variable)

int A; char B[5][10];

Sizeof( A) 2, sizeof (B)  50, sizeof ("abcd“)  5, sizeof(float)  4, sizeof(double) 8

53

(54)

19/03/2020

54

Allocation dynamique

• #include <stdlib.h>

• Pour réserver de l'espace au moment de l’exécution, Il faut allouer la mémoire dynamiquement: malloc ;

• Renvoie un pointeur sur la mémoire allouée ;

• La zone de mémoire n'est pas initialisée.

• long *a = (long *)malloc( sizeof(long) );

• int n = 100;

• long *tab = (long *) malloc(n * sizeof(long));

54

(55)

19/03/2020

55

Allocation dynamique

calloc : Alloue et remplit de 0 la mémoire nécessaire;

renvoie un pointeur sur la zone allouée.

int n = 100;

long *tab = (long *) calloc(n, sizeof(long)); /* n fois 0 */

realloc : realloc(p,size):Réduit (ou augmente) la taille du bloc de mémoire pointé par p a une taille de size octets ; conserve les size premiers octets a l'adresse p. Le reste de la nouvelle zone n'est pas initialisé.

int * tab;

tab = (int *) calloc ( 2, sizeof(int) );

tab[0] = 33; tab[1] = 55;

tab = (int *)realloc(tab, 3 * sizeof(int) );

tab[2] = 77; 55

(56)

19/03/2020

56

Allocation dynamique

• Il peut toujours se produire des erreurs lors de l'allocation dynamique de mémoire : il faut toujours vérifier que le pointeur retourné lors de l'allocation n'est pas NULL!

• int *p;

• if((p=(int *)malloc(nb*sizeof(int)))==NULL) printf("alloc. ratée !");

56

(57)

19/03/2020

57

Libération de la mémoire

• Lorsqu'un emplacement mémoire n'est plus utilisé, il est important de libérer cet espace.

• La fonction free(p ) : libère l'espace mémoire pointé par p qui a été obtenu lors d'un appel a malloc, calloc ou realloc

57

(58)

19/03/2020

58

Chaînes de caractères

58

(59)

19/03/2020

59

char ch;

int i;

i = ‘a’; /* i= 97 */

ch = 65; /* ch = ‘A’ */

ch = ch + 1; /* ch = ‘B’ */

ch++; /* ch = ‘C’ */

if(‘a’ <= ch && ch <= ‘z’)

for(ch = ‘A’; ch <= ‘Z’; ch++)

59

(60)

19/03/2020

60

• ‘a‘, ‘b’, ‘c’ sont des caractères constants

• Chaine de caractères: tableaux de caractères

• − " une chaine constante"

• − 'x'  "x"

60

(61)

19/03/2020

61

Une chaîne de caractères en C est un tableau de caractères. Ce tableau a le dernier caractère \0 (a pour code 0), on le nomme le caractère de fin de chaîne.

exemple

char *chaine ;

chaine=" bonjour " ;

La variable chaîne qui n’est autre qu’un pointeur sur une zone contenant des caractères, ou encore un tableau de caractère, contiendra l’adresse de la zone où seront stockés les

caractères composant la chaîne "bonjour" plus le caractère de code 0.

char chaine [ 256 ] ;

déclare un tableau de 256 caractères pour stocker une chaîne.

Par contre l’instruction : chaine=" bonjour " ;

générera une erreur de compilation, puisque dans ce cas on cherche à modifier l’adresse de la variable tableau, ce qui est

impossible. 61

(62)

19/03/2020

62

On ne peut pas affecter une chaîne en dehors de la déclaration.

On ne peut pas affecter une chaîne à une autre.

On ne peut pas comparer deux chaînes

char mot[8] = "bonjour"; // OK char mot[8] ;

mot = "bonjour"; // ERREUR

char mot1[8] ;

char mot2[8] ; // déclaration de deux chaînes

mot1 = mot2; // ERREUR

char mot1[8] ; char mot2[8] ;// déclaration de deux chaînes

if(mot1 == mot2) // ERREUR

62

(63)

19/03/2020

63

• char ch[ 50];

• int i = 0;

• …

• while ( ch*i+ != ‘\0’) i++;

Parcours d’une chaine

63

(64)

19/03/2020

64

Opérateurs sur les chaînes

• les fonctions de : <s t r i n g . h>

Longueur d’une chaîne

On obtient la longueur d’une chaîne grâce à la fonction strlen :

char chaine[]="programmation" ;

printf ( "La longueur de l a chaine %s est %d . \n" , chaine ,strlen ( chaine ) ) ;

Ce programme affichera :

La longueur de la chaine programmation est 13. 64

(65)

19/03/2020

65

Comparaison de deux chaînes

La fonction permettant de comparer deux chaînes c1 et c2 est strcmp. Elle renvoie:

0 si les deux chaînes sont identiques ;

< 0 si c1 précède c2 ;

> 0 si c1 suit c2.

L’ordre utilisé ici est l’ordre lexicographique :

"a" < "b"

"abc" > "ab"

"a" > "A"

Elle est dépendante du code de caractères utilisé. Pour le code ASCII, nous

avons l’ordre suivant : . . ., 0, 1, 2, . . ., 9, . . ., A, B, C, . . ., Z, . . ., a, b, c, . . ., z, . . .

En supposant que l’on ait déclaré deux chaînes c1 et c2, un test d’égalité entre ces deux chaînes en C, serait :

i f ( strcmp ( c1 , c2)==0)

printf ( "%s e t %s sont i d e n t i q u e s \n" , c1 , c2 ) ;

65

(66)

19/03/2020

66

• Stricmp(c1, c2);

ne fait pas de différences entre majuscules et minuscules

• Strncmp(c1, c2,n);

la comparaison est effectuée sur les n premiers caractères

66

(67)

19/03/2020

67

strcat, strncat : concaténer 2 chaînes

• Cette fonction ajoute une chaîne à la suite d'une autre. On appelle cela la concaténation.

• char ∗ s t r c a t ( char ∗ de s t , const char ∗ s r c ) ;

• char ∗ s t r n c a t ( char ∗ de s t , const char ∗ s r c , int n ) ;

67

Concaténation de chaînes de caractères

(68)

19/03/2020

68

Copie

• La fonction strcpy permet de copier une chaîne dans une autre :

• char chaine[]=" bonjour " ;

• char dest [ 256 ] ;

• strcpy ( dest , chaine ) ;

• La fonction strncpy permet de copier n caractères d’une chaîne dans une autre

• strncpy(dest,chaine,n);

68

(69)

19/03/2020

69

Recherche

Il existe plusieurs fonctions standard permettant de rechercher l’occurrence d’un caractère ou d’une sous- chaîne dans une chaîne. C’est le cas de la fonction strchr cherche la première occurrence d’un caractère dans une chaîne donnée :

char occ= ’ o ’ ;

char *chaine=" bonjour " ;

strchr ( chaine , occ) ;

Retourne l’adresse du premier caractère ’o’ dans la chaîne si le caractère cherché n’est pas dans la chaine NULL est retourné.

strrchr ( chaine , occ) ; cherche la dernière occurrence de ‘o’ dans chaine.

69

(70)

19/03/2020

70

• la fonction strstr effectue le même type de recherche que strchr, mais le motif recherché est une chaîne et non pas un caractère.

strstr(ch1,ch2); recherche la première occurrence de ch2 dans ch1; sinon NULL

• La fonction strpbrk

strpbrk(ch1,ch2) cherche dans ch1 la première occurrence d‘un caractère quelconque de ch2

70

(71)

19/03/2020

71

char *strtok(const char *s1, const char*s2);

Cette fonction permet de couper la chaine de caractères «s1» en symbole élémentaire en les séparant par les caractères de la chaine de caractères

«s2».

Exemple:

#include <stdio.h>

#include <string.h>

int main ()

{

char ch[] ="Cette fonction, ajoute une chaîne la suite d'une autre; On appelle concaténation.";

char * pch;

printf (« les éléments de \"%s\" sont :\n",ch);

pch = strtok (ch, " ,.;'");

while (pch != NULL)

{

printf ("%s\n",pch);

pch = strtok (NULL, " ,.;'");

}

}

71

(72)

19/03/2020

72

Chaînes de caractères

Le fichier d’en-tête ctype.h contient la déclaration de fonctions destinées à tester les caractères:

isdigit(char c) retourne 1 si c est un chiffre, 0 sinon

islower(char c) retourne 1 si c est une lettre minuscule, 0 sinon

isupper(char c) retourne 1 si c est une lettre majuscule, 0 sinon

isalpha(char c) retourne 1 si c est une lettre, o sinon

isspace(char c) retourne 1 si c est un caractère d'espacement, 0 sinon

(73)

19/03/2020

73 tolower(<c>) retourne< c> converti en minuscule si <c>

est une majuscule

toupper(<c>) retourne< c> converti en majuscule si <c>

est une minuscule

(74)

19/03/2020

74

Conversion vers un autre type

Conversion vers un nombre <stdlib.h>

On peut convertir une chaîne de caractères en type flottant à l’aide des fonctions

atoi et atof qui permettent de transformer la chaîne de caractères respectivement en un nombre de type

entier (int) ou flottant (double). Par exemple, on pourra écrire :

char c1[]=" 12340 " , c2[]=" 2.456e45 " ;

int entier ;

double flottant ;

entier=atoi ( c1 ) ;

flottant=atof ( c2 ) ;

74

(75)

19/03/2020

75

Conversion depuis un nombre

On veut souvent pouvoir convertir un nombre (entier ou flottant) en une chaîne de caractères. Le plus simple dans ce cas est de faire appel à la fonction de la

librairie standard d’entrée sortie sprintf. On peut utiliser cette fonction de la manière suivante :

char str [ 10 ] ;

int i=4;

sprintf ( str , "%d" , i ) ;

printf ( " contenu de l a chaine : %s \n" , str ) ;

Ce programme permet donc d’écrire la valeur de i (ici 4) dans la chaîne str. On utilisera la même syntaxe que la fonction printf. Ce programme affichera donc :

contenu de la chaine : 4

75

(76)

19/03/2020

76

• Tableau à 2 dimensions de type char où chaque ligne contient une chaîne de caractères.

76

Les tableaux de chaînes de caractères

Références

Documents relatifs

Pour commencer, on va dans « Données » et on crée deux variables, « nombre » et « diviseur » et une liste que l'on appelle « diviseurs ». L'instruction « modulo » donne le

Initiée le 27 décembre 2020, la campagne nationale de vaccination avait pour objectif d’immuniser en priorité les 750 000 personnes âgées résidant en EHPAD ou en unité de soins

plus pauvres. Stimuler l’application des technologies dans une optique de réduction des coûts. Accroître les services dans les zones rurales, reculées et peu peuplées. Renforcer

Il est question à travers cette étude de faire un diaporama de la gouvernance de la forêt Boucher dans la ville de Gatineau, en s’intéressant particulièrement

quatre unités vers la gauche et d’une translation de six unités vers le bas. Fais subir à y = x 2 un rétrécissement horizontal par un facteur de 1/2, suivi d’une translation

franco domicile, / DÉLAI DE LIVRAISON: 15 jours à date de la commande, / DÉLAI DE PAIEMENT: 30 jours fin de mois// Nous vous prions d'agréer, Messieurs, nos meilleurs

Résultats : vitesse au dernier palier complété Tests Triangulaires.. ➢ Il existe deux protocoles

On