1 sur 4 Programmation en C Fiche de TD&TP N°1 Exercice 1 : Soit n un entier non
1 sur 4 Programmation en C Fiche de TD&TP N°1 Exercice 1 : Soit n un entier non signé déclaré par unsigned int n. Donnez la ou les instruction(s) permettant de 1. mettre tous les bits de n à 0 2. mettre tous les bits de n à 1 3. mettre tous les bits de n à 0 sauf le bit numéro i qui doit être à 1 4. mettre tous les bits de n à 1 sauf le bit numéro i qui doit être à 0 5. forcer le bit numéro i de n à passer à 1 6. forcer le bit numéro i de n à passer à 0 7. inverser le bit numéro i 8. mettre tous les bits d’indice strictement inférieur à i à 1, et tous les autres bits à 0 9. mettre tous les bits d’indice strictement inférieur à i à 0, et tous les autres bits à 1 10. forcer tous les bits de n d’indice inférieur ou égal à i de passer à 1 11. forcer tous les bits de n d’indice inférieur ou égal à i à passer à 0 12. tester si le bit d’indice i est égal à 0 13. tester si le bit d’indice i est égal à 1 14. calculer le nombre de bits à 1 dans n 15. inverser l’ordre des bits de n (le bit de poids fort doit devenir bit de poids faible, le bit de poids faible doit devenir bit de poids fort, etc...) 16. échanger les bits d’indice pair avec les bits d’indice impairs (on supposera que n est un nombre de 32 bits. 17. inverser l’ordre des octets dans le nombre n, que l’on supposera être un nombre de 32 bits (passage de big endian à little endian ou réciproquement) Exercice2: Ecrivez une fonction qui multiplie un nombre a par un nombre b en n’utilisant que des additions, des décalages et des opérations bit à bit. Exercice 3: Écrire un programme C qui lit un entier R au clavier représentant le rayon d’un cercle, calcule et affiche le périmètre de ce cercle ainsi que sa surface. Exercice 4: Écrire un programme C qui lit un réel M au clavier représentant une moyenne et affiche la mention correspondant à cette moyenne. Exemple : si M es dans l’intervalle [10-12[ alors mention passable Exercice 5 : Écrire un programme C qui lit un entier n (s’assure que n est strictement positif) et calcul le factoriel de cet entier dans les deux cas suivants: a- En utilisant uniquement la boucle for. b- En utilisant uniquement la boucle while. Exercice 6 : Écrire un programme C qui lit deux entiers a et b au clavier, calcule et affiche pgcd de ces entiers. Exercice 7: do { while(condition){ // instructions // instructions } }while(condition) a- Quelle est la différence entre ces deux boucles ? 2 sur 4 b- Quand est-il convenable d’utiliser le «do-while»? Donnez un exemple. Exercice 8 : Ecrire un programme C qui lits 10 entiers qu clavier et les affiche dans l’ordre inverse de lecture. Utilisez un tableau pour le faire. Exercice 9 : Ecrire un programme C qui initialise deux tableaux d’entiers t1 et t2 en lisant des entiers au clavier, clalcul le produit t1xt2 et stocke le résultat dans t3. Formule : t3[i] = t1[i] x t2[i] Exercice 10 : Ecrire un programme C qui initialise deux matrices carrées A et B d’ordre n (lu avant la lecture des matrices) en lisant des valeurs au clavier, calcul et affiche la somme C = A+B. Formule : C[i][j] = A[i][j] + B[i][j] Exercice 11 : Ecrire un programme C qui initialise deux matrices carrées A et B d’ordre n (lu avant la lecture des matrices) en lisant des valeurs au clavier, calcul et affiche le produit C = AxB. Exercice 12: Considérer l’algorithme suivant qui a pour objectif de lire un entier n >1 et afficher un message indiquant si n est un nombre premier. Algorithme Premier var n, d, q, r : entier début répéter lire (n) jusqu'à (n>1) d 2 q n div d r n - q * d tant que (r <> 0) et (d < n-1) faire début si d = 2 alors d d + 1 sinon d d + 2 q n div d r n - q * d fin si (r = 0) alors écrire (n, ‘’n’est pas premier ‘’) sinon écrire (n, ‘’est premier’’) fin a) Ecrire le programme C correspondant à cet algorithme b) Ce programme (ou algorithme) ne donne pas toujours les réponses souhaitées. Justifier cette assertion. c) Donner sans modifier la boucle « tant que ... », une version de l’algorithme Premier (ou du programme) qui donne toujours des bonnes réponses. d) Considérer la bonne version de votre algorithme Premier. La condition de fin (r <>0) et (d<n-1) est très naïve. Pourquoi ? e) Proposer une nouvelle version de l’algorithme Premier (et du programme) qui utilise une meilleure condition de fin et dire pourquoi cette nouvelle version est plus performante. Exercice 13 3 sur 4 On veut déterminer la liste des nombres premiers inférieurs ou égaux à 1000. Pour ce faire, on utilise un tableau Table dont l’élément numéro i est initialisé à i. a) Proposer un sous-programme qui initialise tous les éléments du tableau Table. b) Ecrire un sous-programme qui pour un entier j passé en paramètre, (j inférieur ou égal à 1000) met à zéro tous les éléments du tableau qui sont des multiples de j différents de j. c) Dans la fonction main () appelez le sous-programme de la question précédente en lui passant comme paramètre 2. d) Le plus petit nombre supérieur strictement à Table[2] correspondant à un élément du tableau Table qui n’a pas été mis à zéro est un nombre premier. On peut généraliser en disant que si Table[i] est différent de 0, et que tous les éléments multiples de j dans dans le tableau Table sont à 0 alors le plus petit nombre supérieur strictement à Table[i] correspondant à un élément du tableau Table qui n’a pas été mis à zéro est un nombre premier ; utiliser cette idée, les idées des questions a), b) et c) pour développer un algorithme qui détermine la liste des nombres premiers inférieurs ou égaux à 1000. Exercice 14 On suppose qu’un carré magique est une matrice carrée dont la somme des éléments de n’importe quelle colonne ou de n’importe quelle ligne est égale à la même constante CTE. a) Ecrire une fonction qui prend en paramètre une matrice M et un entier i puis calcule et retourne la somme des éléments d’une ligne i b) Ecrire une fonction qui prend en paramètre une matrice M et un entier j puis calcule et retourne la somme des éléments de la colonne j c) Ecrire un programme principal qui utilise les deux fonctions précédentes pour vérifier qu’une matrice carrée d’ordre n entrée par l’utilisateur est un carré magique. Exercice 15: Considérer l’algorithme de suivant : Algorithme TRIECHANGE Début Répéter Inversion vrai Pour i=1 à N-1 faire Si A[i]>A[i+1] alors Début Aux A[i+1] A[i+1] A[I] A[i] Aux Inversion faux Fin Jusqu’à inversion=faux Fin a) Ecrire le programme C correspondant à cet algorithme b) on suppose que N est égal à 8 et que le vecteur A contient dans l’ordre des indices croissants les valeurs réelles suivantes : 10, 2, 11, 20, 12, 8, 9, 10. Modifier le programme écrit à la question pour afficher les valeurs des différents objets manipulés dans la programme à chaque passage dans la boucle « répéter... jusqu’à » 4 sur 4 Exercice 16 : Considérer un vecteur Vec de N nombres réels. On veut vérifier si une valeur Val donnée fait partie des N nombres réels que contient le vecteur Vec. a) On suppose que le vecteur est trié dans l’ordre croissant. Donner l’algorithme de recherche dichotomique. b) Ecrire le programme correspondant à l’algorithme écrit à la question a). c) On suppose que le vecteur est trié dans l’ordre décroissant. Modifier l’algorithme et le programme écrits précédemment pour rechercher Val dans Vec. d) On suppose que le vecteur n’est pas trié. Peut-on encore appliquer l’algorithme de recherche dichotomique ? Pourquoi ? Exercice 17 Considérer l’algorithme de recherche suivant : Algorithme RechercheSentinelle Début //Lecture des entrées Vec[N+1] Val ; i 1 Tant que (Vec[i]Val) faire i i+1 Ftantque Si (i>N) alors Trouve faux Sinon Trouve vrai Pos i Fsi //Affichage des résultats fin a) Écrire des instructions pour faire la lecture des entrées et pour afficher les résultats b) Écrire le programme C équivalent à cet algorithme c) Modifier le programme pour qu’il affiche à chaque itération de la boucle « tant que… » les valeurs de i, Vec[i] et de Val. Qu’affiche ce programme ? d) Modifier l’algorithme en surprenant l’instruction Vec[N+1] Val et en arrangeant la suite pour que l’algorithme fasse exactement la uploads/Litterature/ td1 1 .pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 05, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.4834MB