0% ont trouvé ce document utile (0 vote)
187 vues6 pages

Examen Langage C 2

Ce document présente la correction d'un examen de programmation en C, incluant des exercices sur le calcul du factoriel, la puissance, et le sinus, ainsi que la gestion de stock de produits. Les solutions détaillées incluent des fonctions pour le calcul, des structures de données pour les produits, et des algorithmes de recherche et de tri. Chaque exercice est accompagné d'une notation et d'une explication des étapes nécessaires pour réaliser les programmes demandés.

Transféré par

Holoko
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
187 vues6 pages

Examen Langage C 2

Ce document présente la correction d'un examen de programmation en C, incluant des exercices sur le calcul du factoriel, la puissance, et le sinus, ainsi que la gestion de stock de produits. Les solutions détaillées incluent des fonctions pour le calcul, des structures de données pour les produits, et des algorithmes de recherche et de tri. Chaque exercice est accompagné d'une notation et d'une explication des étapes nécessaires pour réaliser les programmes demandés.

Transféré par

Holoko
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

EVALUATION EN LANGAGE C

(PROGRAMMATION C ) TEST 02/XX 2021


Dans ce document la correction de l'examen de programmation a été entièrement rédigé par le groupe Genius. Le but réel et de pouvoir écrire un programme qui puise
réaliser le factoriel, la puissance , matriciel, algorithmes du calcul du sinus ,algorithmes de tri sélection , recherche avec sentinelle , recherche dichotomique et bien d’autres.
Dans une correction détaillée pas à pas, vous aller découvrir ce qu’il y avait lieu de faire dans cette épreuve.

Exercice 02 : 3pts
La valeur approchée de SIN(X) , avec x en radian. Donne par le développement :

.Les valeurs de x et n sont fournies par l'utilisateurs.

1 Écrire une fonction(int a ) qui permet de calculer le factoriel d'un nombre passe en argument.

2 Écrire une fonction puissance(int a , int b) qui calcule ab avec a et b en paramètres.

3 En utilisant les deux fonctions précédentes écrire un main qui calcule la valeur de sin(x) avec x et n donne par un utilisateur.

Exercice 03 : 6pts
Une entreprise commerciale de la place désire mettre en place un programme pour la gestion de stock de ses produits. Un produit est donne par son code qui ne dépasse pas
5 caractères (Exemple : NDJS2 ) , sa désignation , sa catégorie , son prix de vente, sa quantité d'alerte pour l'approvisionnement, le nombre d'approvisionnement déjà effectué
(avant le premier approvisionnement il est mis à zéro) et la liste des approvisionnements effectues pour ce produit (Cette liste est contenue dans un tableau, et on suppose que
la valeur maximale de ce tableau est 500 ). Un approvisionnement est donné pas sa quantité de produit, la date de l'approvisionnement et le prix d'achat. L'ensemble des
produits est stocké dans un tableau de
taille 10 000.

1 Définir le(s) structure(s) de données pour accueillir les informations sur l'ensemble des produits. 3pts

2 Écrire une fonction «Existence » qui prend en entrée le code d'un produit et le tableau de produits, retourne vrai si ce code existe déjà dans le tableau et faux dans le cas
contraire.3pts
3 Écrire une procédure «AjoutProduit » qui prend en entrée le tableau des produits et y enregistre un produit lu au clavier à la case k du tableau si le code du produit n'
existe pas dans le tableau. 3pts

Exercice 04 : 6pts

CORRECTION :
Exercice 02 : 03 pts
1
Fonction : factoriel 1pts
double factoriel(int a)

if(a == 0 || a == 1)

return 1;

else

return a*factoriel(a-1);

1 Fonction : puissance 1pts


int puissance(int a , int b ) {

// ab ce lit a puissance b

if( b==0 )

return 1;

else return a * puissance(a,b-1);

1
Programme SINUS(X)1pts
#include <stdio.h>
# Define epsi 0.001 ;
int main(){
float x;
printf("Veuillez saisir la valeur de x\n");
scanf("%d",&x);
double sinus = 0 ;
do{
sinus += (puissance(-1,i)*puissance(x,2*i+1))/ factoriel(2*i+1);
i++ ;
}while ( sinus > x*epsi ) ;
printf("Le sinus de %f est : %lf\n",x,sinus);
return 0;
}

Exercice 03 : 06 pts
1 Les structures de données : 3pts


#define N 10000

#define M 500

typedef struct Approvi {

int qteProd;

int dateAppro; // vous pouvez déclarer une Structure Date tel que Date dateAppro

float prixAchat;

} Approvi;

typedef struct produit {

char code[5];

char* designation; // ou char designation[20]

char*categorie; // ou char categorie[20]

float prixVente;

int qteAlerte;

int nbreAppro;

Approvi listeAppro [M] ;

} produit;

1 Ecriture de la fonction Existence :


int Existence(char*code, produit prod [ ] ) {
for(int i = 0; i<N; i++) {
if(strcmp(prod[i].code,code))
return 0; } else {return 1; } }

1 Ecriture de la fonction ajoutez Produit :


void AjoutProduit(produit P [ ] )

printf("Veuillez saisir la position du produit a insérer dans le tableau\n");

int k;

scanf("%d",&k);

printf("Veuillez saisir les informations du produit a insérer\n");

char* code;

printf("Veuillez saisir le code\n");

scanf("%s",code);

if(Existence(code,P))

return ;

else{

strcpy(P[k].code,code);

printf("Veuillez saisir la designation\n");

scanf("%s",P[k].designation);

printf("Veuillez saisir la categorie\n");

scanf("%s",P[k].categorie);

printf("Veuillez saisir le prix de vente\n");

scanf("%f",&P[k].prixVente);

printf("Veuillez saisir la quantite d'alerte pour le réapprovisionnement\n");

scanf("%d",&P[k].qteAlerte);

printf("Veuillez saisir la quantite de produit\n");

scanf("%d",&P[k].listeAppro[P[k].nbreAppro].qteProd);

printf("Veuillez saisir la date de l'approvisionnement\n");

scanf("%d",&P[k].listeAppro[P[k].nbreAppro].dateAppro);

printf("Veuillez saisir le prix d'achat\n");

scanf("%f",&P[k].listeAppro[P[k].nbreAppro].prixAchat);

P[k].nbreAppro++;

}}

Exercice 04 : 06 pts
1 Programme recherche avec Sentinelle ( sur un tableau non trié T ) : 2pts


#include <stdio.h>

#define SIZE 30

#define SIZE_S 31

int main( ) {

int nbr, i, k , T[SIZE_S];

printf(" Entrez les éléments du tableau : ");

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

scanf("%d", &T[i]);

printf(" Entrez l'élément à rechercher: ");

scanf("%d", & k );

//Placer la sentinelle

T[SIZE_S] = k ;

//La recherche commence à partir de zéro

i = 0;

while (i < SIZE && T[SIZE_S] != T[i]) {

i++;

if (i < SIZE) {

printf("L'élément se trouve dans la position = %d", i + 1);

} else {

printf("Elément non trouvé");

return 0;

//www.pandacodeur.com

1 Programme Tri Sélection ( sur un tableau non trié T ) : 2pts


#include <stdio.h>

#define SIZE 30

int main()

{ // Le tri des 03 frères

int i, j, tmp, k , T[SIZE];

printf(" Entrez les éléments du tableau : ");

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

scanf("%d", &T[i]);

for (i=0; i < (SIZE-1); i++){ // (size-1) car un tableau d’un seul élément est déjà trie !

j = i;

for (k=i + 1; k < SIZE; k++) {

if (T[j] > T[k])

j= k;

if ( j != i ) { // permet d’éviter les permutations inutiles

tmp = T[i];

T[i] = T[j];

T[j] = tmp;

printf("\n**** Le tableau triée par ordre croissant ****\n");

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

printf("%4d", T[i]);

return 0;

//www.pandacodeur.com

Programme recherche Dichotomique ( sur un tableau trié T ) : 2pts


1

★★★★★
4 votes. Moyenne 4 sur 5.

AJOUTER UN COMMENTAIRE
Nom *

E-mail

Vous aimerez peut-être aussi