[PDF] Travaux dirigés 2 : pointeurs et tableaux 1 Rappel de cours





Previous PDF Next PDF



TP 1 : tableaux et pointeurs

Page 1. TP 1 : tableaux et pointeurs. Programmation en C (LC4). Semaine du 28 janvier 2008. 1 Manipulation de la ligne de commande. 1.1 Fonctions utiles. Nous 



Pointeurs et Allocation Dynamique

Tableaux et pointeurs. Affichage de tableaux et de pointeurs. Passage de paramètres Exemple 1 : tableau de chaînes. Page 24. 24. Yacine.Bellik@iut-orsay.fr.



TP 5 : Tableaux structures et pointeurs Exercice 1 : Structure

TP 5 : Tableaux structures et pointeurs. Exercice 1 : Structure nombre rationnel et tableaux. 1. Créer une structure NbrRationnel à deux champs : Num et Den 



Pointeurs et tableaux

Pointeurs et tableaux. Un tableau est assimilé à l'adresse de son premier &t[i+1] - &t[i] vaut 1. - comparaisons possibles entre pointeurs : == != (p) ...



Langage C : énoncé et corrigé des exercices IUP GéniE

Exercice 1 1 Ecrire un progra mm e dans l e q ue l vous : 1. Déc l arere z un entier i et un pointeur vers un entier p



TP avec corrections - Langage C Filière STPI Pr. Rachid MALEK

TP 5 – Tableaux numériques et pointeurs (Partie 1). Exercice 1. Ecrire un Correction: char h[4] = {'a' 'b'



Programmation C++ (débutant)/Les tableaux statiques

Interdiction de taper : int i; cin>>i; int t[i];. Lorsque nous aurons étudié les pointeurs 1. 4. Page 9. Programmation C++ (débutant)/Les tableaux statiques.



Programmation C++ (débutant)/Les pointeurs

0 1 4 9 16. 0 1 4 9 16 25 36 49 64 81. Tableaux statiques et pointeurs. Lorsqu'on écrit int t[10]; t est en fait un pointeur non modifiable (constant donc) 



Exercices et probl`emes corrigés en C++

Exercice 1 : Pointeurs. On consid`ere que l'on dispose d'un tableau de flottants déclaré de la mani`ere suivante : float tab[3];. On supposera que ce tableau 



Programmation C++ (débutant)/Les pointeurs

Nous étudierons également les liens entre les tableaux et les pointeurs. Exemple 1 : utilisation de pointeurs. #include<iostream> using namespace std;.



Travaux dirigés 2 : pointeurs et tableaux 1 Rappel de cours

Correction. – Le premier exercice fait reference au cours. L'arithmétique des pointeurs n'a été abordée que rapidement à la fin du cours 



Chapitre 7 - Tableaux `a une dimension

Exemple d'utilisation : – tab [3] = 12; met la valeur 12 dans la case numéro 3 1 du tableau tab. – printf ("%d" tab [3]) affiche la valeur contenue dans la 



TD 4 : Pointeurs Tableaux et Structures Exercice 1 : Tableaux et

Exercice 1 : Tableaux et arithmétique des pointeurs. Soit un pointeur p qui pointe vers un tableau tab comme suit : int tab [ ] = {1 2



Corrigés de travaux pratiques

24 juil. 2014 Correction TP 02. Algorithmique et programmation. 1/3 ... Tableau de situation de l'exercice précédent : ... 4 Tableaux de pointeurs.



Programmation C++ (débutant)/Les tableaux statiques

Lorsque nous aurons étudié les pointeurs et le mot clé new (dans quelques Nous remplissons ensuite ce tableau en mettant 1/(i+1) dans la case numéro i.



Pointeurs et tableaux

Page 1. Pointeurs et tableaux. Un tableau est assimilé à l'adresse de son premier élément. Une variable de type tableau de t est un pointeur sur t -.



Pointeurs et Allocation Dynamique

1. Pointeurs et Allocation. Dynamique. Yacine BELLIK. IUT d'Orsay. Université Paris XI Tableaux et pointeurs. Affichage de tableaux et de pointeurs.



TP 1 : tableaux et pointeurs

Les fonctions suivantes travaillent sur un tableau de chaînes de caractères char** tab . Vous pourrez par exemple les tester sur la ligne de commande du 



Programmation en langage C

1 Les bases de la programmation en C. 9. 1.1 Historique . 1.10.1 Branchement non conditionnel break . ... 3.5.1 Pointeurs et tableaux `a une dimension .

Travaux dirigés 2 : pointeurs et tableaux 1 Rappel de cours

Université Paris-Nord L1

Institut Galilée Année 2008-2009

Licence 1 - 2ième semestre

Travaux dirigés 2 : pointeurs et tableauxCorrection.

- Le premier exercice fait reference au cours. L"arithmétique des pointeurs n"a été abordée

que rapidement à la fin du cours, donc il est nécessaire de faire un bref rappel avant d"attaquer l"exo de rappel de cours. - Pour le dernier exercice, il peut être bon de leur rappeler la procédure à suivre : - on se donne des exemples - on trouve un algorithme en francais - on traduit l"algorithme en C en s"aidant de commentaires issus de l"algo en francais - on test sur les exemples qu"on s"est donnes C"est un exercice qu"ils ont déjà vu au semestre 1 (première version). Dans l"ensemble du TD, on considère que l"on travaille sur une architecture 32 bits.

1 Rappel de cours

On considère que les déclarations suivantes ont été faites : int a; char tab[10];

Une expression avec pointeurs (resp. sans pointeurs) vous est donnée, vous devez la ré-écrire

sans (resp. avec) l"usage explicite des pointeurs.

1. *(&a)

2. *tab

3. *(tab + 0)

4. (*tab) + 1

5. &(tab[0])

6. &(tab[i])

7. ++tab[i]

Correction.

1. *(&a) : a

2. *tab : tab[0]

3. *(tab + 0) : tab[0]

4. (*tab) + 1 : tab[0] + 1

5. &(tab[0]) : tab

1

6. &(tab[i]) : (tab + i)

7. ++tab[i] : ++(*(tab + i))

Si l"on écrit la suite d"instructions suivante : char *p; p = tab + 1;

1. Quelle sera la différence en octets entre les deux adressestabetp?

Correction.sizeof(char) = 1 octet en C (standard, dépend pas de l"archi)

2. Même question sitabetpsont déclarés pointer sur desint?

Correction.sizeof(int) = 4 octet sur PC 32 bits, Leur dire que l"on peut faire la diffe- rence entre pointeurs. Pas dit en cours. L"exo s"y prete bien.

2 Occupation mémoire

Il est demandé dans cet exercice de représenter en mémoire les données déclarées dans un

programme, ainsi que leurs différentes valeurs, à un moment donné de l"exécution. Pour cela,

vous représenterez l"occupation des données en mémoire dans un tableau à 3 colonnes comme

montré ci-dessous :identificateuradressevaleur a??. ..Pour déterminer les adresses, on fera les approximations suivantes : - les données sont réservées en mémoire dans l"ordre de leur déclaration - la première adresse démarre à 1000 1 - l"architecture est 32 bits Le programme est donné ci-dessous. Notez que le programme fait une utilisation abusive des

pointeurs, l"objectif étant simplement de vous familiariser avec la syntaxe et la sémantique des

instructions manipulant des pointeurs. #include #include int main() int a = 10; int b = 5; int tab[3] = {1,2,3}; int *p_int; /* représenter l"occupation mémoire */1

L"adresse est donnée en notation décimale bien que la notation hexadécimale soit la plus utilisée pour des

raisons de concision et de facilité de conversion en base 2 2

Correction.identificateuradressevaleur

a100010 b10045 tab[0]10081 tab[1]10122 tab[2]10163 p_tab1020? tab[0] = a; *(tab + 1) = b; p_int = tab + 2; /* représenter l"occupation mémoire */

Correction.identificateuradressevaleur

a100010 b10045 tab[0]100810 tab[1]10125 tab[2]10163 p_tab10201016 *p_int = *(p_int - 1); --p_int; *p_int = *(p_int - 1); --p_int; *p_int = *(p_int + 2); /* représenter l"occupation mémoire */

Correction.identificateuradressevaleur

a100010 b10045 tab[0]10085 tab[1]101210 tab[2]10165 p_tab10201008 /* donner l"affichage */

Correction./* 10 5 5 10 5 */

return EXIT_SUCCESS; 3

3 Compter le nombre d"occurences d"un entier dans un ta-

bleau d"entiers

Nous voulons écrire un programme qui, étant donné un tableau d"entiers déjà initialisé,

demande à l"utilisateur quel entier chercher et affiche ensuite le nombre d"occurrences de cet entier dans le tableau.

1. Écrire le programme en utilisant l"opérateur[].

Correction.

#include /* EXIT_SUCCESS */ #include /* printf */ #define TAILLE 4 /* taille du tableau utilisateur */ /* declaration de fonctions utilisateurs */ int main() int tab[TAILLE] = {-1,3,3,2}; /* tableau a initialiser par l"utilisateur */ int elt; /* l"elt a chercher */ int nb_occ = 0; /* le nombre d"occurrences de elt dans tab */ int i; /* var. de boucle */ /* saisie de l"entier à chercher */ printf("Compte le nombre d"occurrences de quel entier ?\n"); scanf("%d",&elt); /* compte le nombre d"occurrences */ for(i = 0;i < TAILLE;i = i + 1) /* chaque case du tableau */ if(tab[i] == elt) /* trouvé */ /* un de plus */ nb_occ = nb_occ + 1; /* i >= TAILLE */ /* affiche résultats */ printf("Il y a %d occurrences de %d dans le tableau.\n",nb_occ,elt); return EXIT_SUCCESS; /* implantation de fonctions utilisateurs */ 4

2. Écrire le programme en utilisant explicitement les pointeurs pour accéder aux éléments

du tableau, c"est-à-dire sans utiliser une variable d"indice.

Correction.

1#include /* EXIT_SUCCESS */

2#include /* printf */

3

4#define TAILLE 4 /* taille du tableau utilisateur */

5

6int main()

7{

8int tab[TAILLE] = {-1,3,3,2}; /* tableau a initialiser par l"utilisateur */

9int elt; /* l"elt a chercher */

10int nb_occ = 0; /* le nombre d"occurrences de elt dans tab */

11int *p_int; /* var. de boucle */

12

13/* représentation de l"occupation mémoire */

14

15/* saisie de l"entier à chercher */

16printf("Compte le nombre d"occurrences de quel entier ?\n");

17scanf("%d",&elt);

18

19/* compte le nombre d"occurrences */

20for(p_int = tab;p_int < (tab + TAILLE);p_int = p_int + 1) /* chaque case du tableau */

21{

22if(*p_int == elt) /* trouvé */

23{

24/* un de plus */

25nb_occ = nb_occ + 1;

26}
27}

28/* p_int >= tab + TAILLE */

29

30/* affiche résultats */

31printf("Il y a %d occurrences de %d dans le tableau.\n",nb_occ,elt);

32

33return EXIT_SUCCESS;

34}

3. Faire la trace de cette deuxième version. Une ligne sera ajoutée au tableau de trace pour

noter l"adresse des variables. Les adresses seront choisies en respectant la même convention que pour l"exercice précédent.

Correction.Leur donner le format avant.

5 numéro de lignetab[0]tab[1]tab[2]tab[3]eltnb_occp_intAffichage (sortie écran) adresse1000100410081012101610201024 initialisation-1332?0?

16Compte le nombre d"occurrences de quel entier ?\n173

201000

271004

251

271008

252

271012

271016

31Il y a 2 occurrences de 3 dans le tableau.\nN.B. :La notation[]a été introduite pour rendre plus lisible et plus explicite l"accès au

tableau, donc la première version est considérée comme la version correcte. 6quotesdbs_dbs2.pdfusesText_3
[PDF] fiche exo chap1 corrige

[PDF] Exercices d 'électromagnétisme

[PDF] limites et continuité - Philippe DEPRESLE

[PDF] trigonometrie - exercices corriges - Free

[PDF] Polycopié de cours et d exercices dirigés 1ère partie

[PDF] 1 Logique des propositions - Ensiie

[PDF] Corrigés - La Chaire EPPP

[PDF] MANAGEMENT De la QUALITE TOTAL - Jamiati

[PDF] MANAGEMENT De la QUALITE TOTAL - Jamiati

[PDF] Martingales et calcul stochastique - Cel - Hal

[PDF] fiche d 'exercices n°2 : correction - Math93

[PDF] Corrigés des exercices - Académie en ligne

[PDF] MECANIQUE DES FLUIDES Cours et exercices corrigés - UVT e-doc

[PDF] exercices de mesures et instrumentaion avec quelques corriges 1

[PDF] TD Microéconomie - Numilog