EVALUATION EN LANGAGE C ( PROGRAMMATION C ) TEST  03 /XX 2022

EXAMEN LANGAGE C

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.

 

Correction :

Exercice 1 :

    1- Différence entre l'opérateur * et l'opérateur &

    L'opérateur * placer entre deux variable numériques permet de réaliser la multiplication de celle-ci, cependant si elle est placé entre une déclaration et une variable, alors elle définit un point vers le type de donnée créer.

    exple : multiplication  int a = 4, b = 5; int c = a*b;

            Déclaration de pointeur     int*a;

    L'opérateur & permet de représenter l'adresse mémoire d'une variable (c'est la zone a laquelle sera stocké son contenue ou sa valeur)

    exple : int a; scanf("%d",&a);

    2- différence entre les déclarations int*pt et int val;

    int*p est la declaration d'un pointeur pt;

    int val est une déclaration d'une variable entière nommée val;

    3- la valeur finale de val est : 10

    4- l'instruction correcte est *pt=4; car pt est un pointeur.

Exercice 2 :   

    1- Différence entre passage par valeur et passage par référence :

    Le passage par référence signifie que les fonctions dites "du paramètre sera le même que les appelants' argument passé (pas la valeur, mais l'identité de la variable elle-même). Le passage par valeur signifie que les fonctions dites "du paramètre sera une copie de l'appelant' argument passé.

    2- une fonction en langage c ne peut pas modifiée la valeur d’une variable passée par paramètre car elle travaille sur une copie de celle-ci.

    3- Le passage d'un tableau en paramètre a une fonction se fait par référence c.-à-d. on passe le pointeur de tète du tableau.

    4- Correction du code :

       #include <stdio.h>

        #define N 5

        int* create_init(int size){

            int *v ;

// on crée un pointeur en local et on lui alloué dynamiquement de la memoire

            v = malloc(size*sizeof(int));

            for(int i=0;i<size;i++) *(v+i)=0;

//on manipule ce tableau comme un pointeur

            return v;//on retourne l'adresse memoire de ce pointeur

        }

Exercice 3 :

void triangle(int n){

    if(n>0){

        for(int i=0;i<n;i++){

            for(int j=0;j<=i;j++){

                printf("*");  }

            printf("\n");  }

    }else{

        printf("valeur entrée non reconnue\n"); }

}

Sortie Ecran :

Exercice 4  : 

#include <stdio.h>

#include <stdlib.h>

#define N 2

int main(){

    int a[N][N],b[N][N];int size=0;

    //lecture des données de la matrice A

    for(int i=0;i<N;i++){

        for(int j=0;j<N;j++){

            printf("Entrer la valeur A[%d,%d]\n",i,j);

            scanf("%d",&(a[i][j])); }  }

    //lecture des données de la matrice B

    for(int i=0;i<N;i++){

        for(int j=0;j<N;j++){

            printf("Entrer la valeur B[%d,%d]\n",i,j);

            scanf("%d",&(b[i][j])); } }

    //determinons le nombre de coeficients egaux

    for(int i=0;i<N;i++){

        for(int j=0;j<N;j++){

            if(a[i][j] == b[i][j]) size++;  }   }

    printf("Il y'a %d coeficients egaux\n",size);

    return 0;

}

Exercice 5 :

1- fonction qui détermine si une chaine est une sous chaine d'une autre chaine

int sous_chaine(char*sc,char*chaine){

    int bool = 0,i=0,j=0;

    while(i < strlen(sc)){

        if(j < strlen(chaine)){

            if(*(chaine+j) == *(sc+i)){

                j++;i++;

            }else{

                i++;j=0;

            }

        } else{

            bool = 1;

            break;

        }

    }

    return bool;

}

2- fonction qui fusionne deux chaine de caractère

char* fusion2(char*chaine1, char*chaine2){

    char* chaine;int j=0,k=0;

    chaine = malloc((strlen(chaine1) + strlen(chaine2))*sizeof(char));

    for(int i = 0;i < (strlen(chaine1) + strlen(chaine2));i++){

        if(j< strlen(chaine1)){

            *(chaine+i) = *(chaine1+j);

            j++;

        }else{ *(chaine+i) = *(chaine2+k);

            k++;   }  }

 return chaine;

}

Exercice 6  :

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

char* plug_long_nom(){

    char* nom=malloc(100*sizeof(char)),*nom1=malloc(100*sizeof(char));

    printf("Entrez un nom\n");

    scanf("%s",nom);

    while(strcmp(nom1,"fin")){

        printf("Entrez un autre nom\n");

        scanf("%s",nom1);

        if(strlen(nom) < strlen(nom1)){

            strcpy(nom,nom1);  }}

    return nom ;}

int main(){

    char* nom = plug_long_nom();

    printf("Le plus long nom saisie est : %s\n",nom);

    return 0;

}

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

Bonne chance pour la normale les amis.


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

  • 1 vote. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam