Exercices C

6

Click here to load reader

Transcript of Exercices C

Page 1: Exercices  C

Exercice 1

Calculez le nombre lu à rebours d'un nombre positif entré au clavier en supposant que le fichier d'entrée standard contient une suite de chiffres non nuls, terminée par zéro (Contrôlez s'il s'agit vraiment de chiffres). Exemple: Entrée: 1 2 3 4 0 Affichage: 4321

Exercice 2

Calculez pour une valeur X donnée du type float la valeur numérique d'un polynôme de degré n:

P(X) = AnXn + An-1X

n-1 + ... + A1X + A0

Les valeurs de n, des coefficients An, ... , A0 et de X seront entrées au clavier.

Utilisez le schéma de Horner qui évite les opérations d'exponentiation lors du calcul:

Exercice 3

Calculez le N-ième terme UN de la suite de FIBONACCI qui est donnée par la relation de récurrence:

U1=1 U2=1 UN=UN-1 + UN-2 (pour N>2)

Déterminez le rang N et la valeur UN du terme maximal que l'on peut calculer si on utilise pour UN :

- le type int

- le type long

- le type double

Page 2: Exercices  C

- le type long double

Exercice 4

Affichez un triangle isocèle formé d'étoiles de N lignes (N est fourni au clavier):

Nombre de lignes : 8 * *** ***** ******* ********* *********** ************* ***************

Exercice 5

Affiche la table des produits pour N variant de 1 à 10 :

X*Y I 0 1 2 3 4 5 6 7 8 9 10 -------------------------------------------------- 0 I 0 0 0 0 0 0 0 0 0 0 0 1 I 0 1 2 3 4 5 6 7 8 9 10 2 I 0 2 4 6 8 10 12 14 16 18 20 3 I 0 3 6 9 12 15 18 21 24 27 30 4 I 0 4 8 12 16 20 24 28 32 36 40 5 I 0 5 10 15 20 25 30 35 40 45 50 6 I 0 6 12 18 24 30 36 42 48 54 60 7 I 0 7 14 21 28 35 42 49 56 63 70 8 I 0 8 16 24 32 40 48 56 64 72 80 9 I 0 9 18 27 36 45 54 63 72 81 90 10 I 0 10 20 30 40 50 60 70 80 90 100

Tableaux et matrices

a- Tableaux ou vecteurs : Déclaration : type nom [nombre_d'éléments];

Exemple : int tab[10];

Page 3: Exercices  C

Ceci réserve en mémoire un espace

tab[9] !!! (Source d’erreurs non signalée par le compilateur

On peut aussi déclarer un tableau par typedef

typedef float vecteur[3] ;

vecteur x,y,z ;

On peut aussi initialiser un tableau lors de sa déclaration

int T[4] = {10,20,30,40} ;

Comme on peut ne pas spécifier la dimension du tableau

int Y[ ] = {3,5,7} ;

Exemple :

Dans cet exemple, on va sommer

#include <stdio.h>

#include <stdlib.h>

int main ()

{

int i;

typedef int vecteur[4];

vecteur U={1,2,3,4},V={1,2,3,4},W;

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

{

W[i]=U[i]+V[i];

printf("%d ",W[i]);

}

printf("\nFin du travail\n");

system("pause");

return 0;

}

b- Matrices : Déclaration : type nom [nombre_

Exemple : float M[3][4] ;

Exemple :

Dans cet exemple, on va sommer

#include <stdio.h>

#include <stdlib.h>

int main ()

{

int i,j;

typedef int matrice[2][2];//2 lignes 2 colonnes

matrice A={1,2,3,4},B={5,6,7,8},C;//1,2 1ère ligne, 3,4 2ème ligne

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

{

for(j=0;j<=1;j++)

{

C[i][j]=A[i][j]+B[i][j];

printf("%5d",C[i][j]);//de l'espace pour afficher

}

printf("\n"); printf("\n");

}

printf("Fin du travail\n");

system("pause");

ve en mémoire un espace pouvant contenir 10 entiers. Le premier est tab[0], jusqu'à

!!! (Source d’erreurs non signalée par le compilateur !).

On peut aussi déclarer un tableau par typedef :

On peut aussi initialiser un tableau lors de sa déclaration :

Comme on peut ne pas spécifier la dimension du tableau :

sommer 2 vecteurs et afficher le vecteur résultat :

vecteur U={1,2,3,4},V={1,2,3,4},W;

type nom [nombre_lignes] [nombre_colonnes];

sommer 2 matrices et afficher le résultat :

typedef int matrice[2][2];//2 lignes 2 colonnes

3,4},B={5,6,7,8},C;//1,2 1ère ligne, 3,4 2ème ligne

",C[i][j]);//de l'espace pour afficher

ier est tab[0], jusqu'à

Page 4: Exercices  C

return 0;

}

Exercice 1 : Insérer une valeur dans un tableau trié

Un tableau A de dimension N+1 contient N valeurs entières triées par ordre croissant; la (N+1)valeur est indéfinie. Insérer une valeur VAL un tableau de N+1 valeurs triées.

Exercice 2 : Fusion de deux tableaux triés

Problème: On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant. Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.

Méthode: Utiliser trois indices IA, IB et IFUS. Comparer A[IA] et B[IB]; remplacer FUS[IFUS] par le plus petit des deux éléments; avancer dans le tableau FUS et dans le tableau qui a contribué son élément. Lorsque l'un des deux tableaux A ou B est épuiséde l'autre tableau dans le tableau FUS.

Exercice 3 : Tri par sélection du maximum

Problème: Classer les éléments d'un tableau A par ordre décroissant.

Méthode: Parcourir le tableau de gauche à droite à l'aide de l'indice I. Pour chaque élément A[I] du tableau, déterminer la position PMAX du (premier) maximum à droite de A[I] et échA[PMAX].

Exemple:

Insérer une valeur dans un tableau trié

Un tableau A de dimension N+1 contient N valeurs entières triées par ordre croissant; la (N+1)valeur est indéfinie. Insérer une valeur VAL donnée au clavier dans le tableau A de manière à obtenir un tableau de N+1 valeurs triées.

Fusion de deux tableaux triés

On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant. Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.

Utiliser trois indices IA, IB et IFUS. Comparer A[IA] et B[IB]; remplacer FUS[IFUS] par le plus petit des deux éléments; avancer dans le tableau FUS et dans le tableau qui a contribué son élément. Lorsque l'un des deux tableaux A ou B est épuisé, il suffit de recopier les éléments restants de l'autre tableau dans le tableau FUS.

Tri par sélection du maximum

Classer les éléments d'un tableau A par ordre décroissant.

Parcourir le tableau de gauche à droite à l'aide de l'indice I. Pour chaque élément A[I] du tableau, déterminer la position PMAX du (premier) maximum à droite de A[I] et éch

Un tableau A de dimension N+1 contient N valeurs entières triées par ordre croissant; la (N+1)ième donnée au clavier dans le tableau A de manière à obtenir

On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre croissant. Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.

Utiliser trois indices IA, IB et IFUS. Comparer A[IA] et B[IB]; remplacer FUS[IFUS] par le plus petit des deux éléments; avancer dans le tableau FUS et dans le tableau qui a contribué son

, il suffit de recopier les éléments restants

Parcourir le tableau de gauche à droite à l'aide de l'indice I. Pour chaque élément A[I] du tableau, déterminer la position PMAX du (premier) maximum à droite de A[I] et échanger A[I] et

Page 5: Exercices  C

Exercice 4 : Statistique des notes

Ecrire un programme qui lit les points de N élèves d'une classe dans un devoir et les mémorise dans un tableau POINTS de dimension N.

* Rechercher et afficher:

- la note maximale,

- la note minimale,

- la moyenne des notes.

* A partir des POINTS des élèves, établir un tableau NOTES de dimension 7 qui est composé de la façon suivante:

NOTES[6] contient le nombre de notes 60

NOTES[5] contient le nombre de notes de 50 à 59

NOTES[4] contient le nombre de notes de 40 à 49

...

NOTES[0] contient le nombre de notes de 0 à 9

Etablir un graphique de barreaux représentant le tableau NOTES. Utilisez les symboles ####### pour la représentation des barreaux et affichez le domaine des notes en dessous du graphique.

Idée: Déterminer la valeur maximale MAXN dans le tableau NOTES et afficher autant de lignes sur l'écran. (Dans l'exemple ci-dessous, MAXN = 6).

Exemple:

La note maximale est 58

Page 6: Exercices  C

La note minimale est 13 La moyenne des notes est 37.250000 6 > ####### 5 > ####### ####### 4 > ####### ####### ####### 3 > ####### ####### ####### ####### 2 > ####### ####### ####### ####### ####### 1 > ####### ####### ####### ####### ####### +-------+-------+-------+-------+-------+-------+-------+ I 0 - 9 I 10-19 I 20-29 I 30-39 I 40-49 I 50-59 I 60 I