• Aucun résultat trouvé

I3:Pointeurs,tableaux,chaînesdecaractèresetallocationdynamiquedemémoire TDn 4

N/A
N/A
Protected

Academic year: 2022

Partager "I3:Pointeurs,tableaux,chaînesdecaractèresetallocationdynamiquedemémoire TDn 4"

Copied!
3
0
0

Texte intégral

(1)

IUT de Villetaneuse - Département R&T RT1 - 2011-2012

TD n

o

4

I3 : Pointeurs, tableaux, chaînes de caractères et allocation dynamique de mémoire

Exercice 1 [Pointeurs et valeurs]

Considérons le début de programme C suivant : 1 #i n c l u d e <s t d i o . h>

2 #i n c l u d e < s t d l i b . h>

3

4 #d e f i n e TAILLE 5 5

6 i n t main ( ) {

7 i n t ta b [ TAILLE ] ; 8 i n t∗ t a b 2 ;

9 i n t∗ i ;

10 i n t j ;

11

12 return EXIT_SUCCESS ;

13 }

1. Quelle sera la taille du tableautab ?

2. Comment initialise-t-on chaque case du tableautab avec la valeur 0 ? 3. Demandez à l’utilisateur de saisir les valeurs contenues dans le tableau tab

4. Initialisez les valeurs contenues dans le tableau avec la valeur de l’indice des élements 5. Quelle est la valeur detab ?

6. Comment l’affiche-t-on ?

7. Quelle est la valeur de*tab? Comment l’affiche-t-on ? 8. Peut-on effectuer l’assignation suivante : i = tab[0]

9. Quelle est la différence entre i = &(tab[1])et*i = tab[1] ?

10. Considérons que la suite du programme contient le code suivant. Qu’affiche le programme ?

1 i n t x ;

2 i = &x ;

3 tab [ 1 ] = 1 ;

4 ∗i = ta b [ 1 ] ;

5 tab [ 1 ] = 1 0 ;

6 p r i n t f ( "∗i = %d\n" , ∗i ) ; 7 i = &( tab [ 1 ] ) ;

8 tab [ 1 ] = 1 0 0 ;

9 p r i n t f ( "∗i = %d\n" , ∗i ) ;

Camille Coti – camille.coti@iutv.univ-paris13.fr 1/3

(2)

IUT de Villetaneuse - Département R&T RT1 - 2011-2012

11. Peut-on effectuer l’assignation suivante : tab2 = tab? 12. À quoi cette instruction correspond-elle en mémoire ?

13. Comment peut-on dupliquer le tableautab à un endroit de la mémoire pointé partab2? Exercice 2 [Permutation de valeurs]

1. Ecrire une procédure C permuterGauche()réalisant la permutation circulaire vers la gauche des valeurs de trois variables entières, à la manière de l’algorithme d’échange des valeurs de deux variables vu en TD d’algorithmique.

2. Ecrire un programme C qui initialise les trois variables en demandant à l’utilisateur de saisir des valeurs une par une, affiche leurs valeurs avant permutation, appelle la fonction permuterGauche() et enfin affiche les valeurs de ces variables après permutation.

Exercice 3 [Transposée d’une matrice carrée]

On appellematrice un tableau à deux dimensions. Latransposée d’une matrice est son symétrique par rapport à la diagonale. Par exemple,

1 2

3 4

a pour transposée

1 3

2 4

.

Écrivez une procédure en C qui réalise la transposition en place (en utilisant une seule matrice, sans tableau supplémentaire) d’une matrice d’entiers N ×N. La procédure prend en arguments un pointeur vers la matrice et la tailleN.

Exercice 4 [Tableaux en C]

Considérons le morceau de code C suivant : 1 i n t∗ ta b ;

2 t ab [ 0 ] = 1 ; 3 t ab [ 1 ] = 2 ;

1. Que va-t-il se passer ?

2. On modifie le programme comme suit. Que va-t-il se passer ? 1 i n t∗ ta b ;

2 ta b = (i n t∗) m a l l o c ( 2 ∗ s i z e o f( i n t ) ) ; 3 ta b [ 0 ] = 1 ;

4 ta b [ 1 ] = 2 ; 5 ta b [ 2 ] = 3 ;

3. Comment faut-il modifier le dernier morceau de code pour qu’il s’exécute correctement ? Exercice 5 [Saisie d’une phrase]

Lorsque l’utilisateur saisit une chaîne de caractères, celle-ci est stockée dans un tableau de caractères de taille au moins égale à la longueur de la chaîne de caractères (en la terminant par le caractère spécial\0). Cependant, il arrive que l’on ne sache pas à l’avance quelle sera la longueur de la chaîne de caractères que l’utilisateur va saisir.

Écrivez une fonction qui permet à un utilisateur de saisir une phrase d’une longueur quelconque et retourne cette phrase. Rappel : une phrase se termine par un point.

Camille Coti – camille.coti@iutv.univ-paris13.fr 2/3

(3)

IUT de Villetaneuse - Département R&T RT1 - 2011-2012

Exercice 6 [Supprimer les espaces]

1. Écrivez une fonction qui prend en entrée une chaîne de caractères, construit une chaîne de caractères à partir de la chaîne d’entrée en supprimant les espaces et retourne la chaîne ainsi construite. La chaîne construite utilisera le même espace mémoire que la chaîne d’entrée. On marque la fin d’une chaîne de caractères par le caractère spécial \O.

2. Écrivez une fonction qui réalise la même chose que la question précédente, mais en utilisant exactement l’espace mémoire nécessaire pour la deuxième chaîne de caractères.

Camille Coti – camille.coti@iutv.univ-paris13.fr 3/3

Références

Documents relatifs

Pour répondre aux besoins formulés à l’issue des assises du service public communal du mois de février 2019, le maire Azzédine Taïbi en compa- gnie d’élus, et notamment de

Comme revu dans l'introduction, lorsqu'une expression de type tableau est l'opérande de l'opérateur d'affectation (p=tab ), d'addition (tab+2 ), d'appel de fonction

Définir un déclencheur après insertion, modification ou suppression dans la table EMP qui met à jour automatiquement la table STATS.. Tester son fonctionnement

En reproduisant cependant ce « motif », on peut définir une fonction continue sur \ satisfaisant la contrainte imposée :. Notons ϕ la fonction correspondant à la

Dans le cas où X et Y sont indépendantes, simplifier ces expressions lorsque cela est possible.. Exercice 2

- un texte rouge de taille 20pt centré en titre - une image centrée. a) Ecrire un programme PHP qui, à la soumission du formulaire, affiche une page avec une image de

On suppose dans cette question que (2/ω)D − A est sym´ etrique d´ efinie positive. sup´ erieure) de A, et on note J et G les matrices d’it´ eration des m´ ethodes de Jacobi

a+i c’est l’adresse du i-ème élément du tableau a+i c’est aussi &amp;a[i]. L’incrément/décrément dépend du type de