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   .    

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam
Sélectionnez l'image visible le moins de fois

Gestion des cookies

www.pandacodeur.com dépose des cookies pour améliorer votre expérience de navigation, mesurer l'audience du site internet, afficher des publicités personnalisées, réaliser des campagnes ciblées et personnaliser l'interface du site.