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 :Sinus pandacodeur .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

}

 

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

#include <stdio.h>

#define SIZE 30

int main( ){

 /* Déclarations */

 int T[SIZE]; /* tableau donné */

 int k ;   /* valeur à rechercher   */

 int I;     /* indice courant */

int POS;     /* position courantes */

 int INF, MIL, SUP; /* limites du champ de recherche */

 //réalisez par le groupe genius

 /* Saisie des données */

 printf("Entrer Elément à rechercher : ");

 scanf("%d", &k );

 /* Affichage du tableau suppose trie par ordre croissant */

 printf(" Le Tableau donné : \n");

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

    printf("%d ", T[I]);

 printf("\n");

 /* Initialisation des limites du domaine de recherche */

  INF=0;

  SUP= SIZE-1;

 /* Recherche de la position de la valeur */

 POS=-1;

 while ((INF<=SUP) && (POS==-1)) {

         MIL=(SUP+INF)/2;

         if ( k < T[MIL])

               SUP=MIL-1;

         else if (k > A[MIL])

               INF=MIL+1;

         else

               POS=MIL;

        }

 

  /* Affichage du résultat */

 if (POS==-1)

     printf("La valeur recherchée ne se trouve pas "

            "dans le tableau.\n");

 else

     printf("La valeur %d se trouve à la position %d. \n",

 k , POS);

   return 0;

//www.pandacodeur.com

}

‘’ La persévérance, c’est ce qui rend l’impossible possible, le possible probable et le probable réalisé. ‘’

  Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk   .    

4 votes. Moyenne 4 sur 5.

Ajouter un commentaire

Anti-spam