EXAMEN LANGAGE C ( PROGRAMMATION C ) TEST  20 /XX année acaDéMIQUE 2024 - 2025

EXAMEN + CORRIGE EN LANGAGE C

EXERCICE 1 : Exécution de Code 04 pts

Donnez la sortie écran de ce programme C :

Programe a

 

			    #include 
int main() {
    int v1 = 100, v2 = 201, v3 = 303, v4 = 410, v5 = 150;
    int *ptr1 = &v1, *ptr2 = &v2, *ptr3 = &v3, *ptr4 = &v4, *ptr5 = &v5;
    int **dptr = &ptr1;
    **dptr += 51;
    dptr = &ptr2;
    **dptr = (*ptr1)++;
    dptr = &ptr3;
    **dptr += (v2 % 2 == 0) ? 40 : -17;
    dptr = &ptr4;
    **dptr = ++(*ptr3);
    dptr = &ptr5;
    **dptr = (*ptr4 > 100) ? (*ptr4 - 35) : (*ptr4 + 45);
    printf("Valeur finale de v1 : %d\n", v1);
    printf("Valeur finale de v2 : %d\n", v2);
    printf("Valeur finale de v3 : %d\n", v3);
    printf("Valeur finale de v4 : %d\n", v4);
    printf("Valeur finale de v5 : %d\n", v5);
    return 0;}

EXERCICE 2 : 08 pts :

Questions de Cours :

  1. Quel est le type de chacune des constantes suivantes : '1', ''1'', 1, ''1234'', ''jean'' 
  2. Quelle est la différence syntaxique entre une constante caractère (char) et une constante chaîne de caractères ? L' écriture 'jean' est elle correcte ? Existe-t-il un type spécifique au chaine en C ?
  3. Quelle est la différence sémantique entre ++i et i++ ? Donner les valeurs de x, y, z  et i après l'exécution du bout de code suivant : « i=4 ; x=4 + ++i ; y=4 + i++ ; z=++i + i++ »
  4. Analyse d’un code C , donner la sortie écran et explique la Structure de Contrôle utilisée dans ce Programme C:

#include <stdio.h>

int main() {

    int n=4, m=9;

    (n > 0 && n <= 100) ? printf("n est Positif et dans la plage [1, 100]\n") :

    (n < 0 && n >= -100) ? printf("n est Négatif et dans la plage [-100, -1]\n") :

    printf("n est Zero ou hors des plages spécifiées\n");

    (m % 2 == 0 && m != 0) ? printf("m est Pair et non nul\n") :

    (m % 2 != 0 && m != 0) ? printf("m est Impair et non nul\n") : printf("m est Zero\n");

    return 0; }

  1. What are basic data types supported in the C Programming Language? What are tokens in C?
  2. All keywords in C are in __a) LowerCase letters b) UpperCase letters c) CamelCase letters
    d) None of the mentioned
  3. Which is valid C expression? a) int my_num = 100,000; b) int my_num = 100000; c) int my num = 1000;  d) int $my_num = 10000;
  4. What is the use of printf() and scanf() functions? Also explain format specifiers?
  5.  Code Suivant : char c = ‘t ’ ;   printf("Le code___de '%c' est ?: %d\n", c, c); donne quel résultat ?

Comment se base la machine pour trouver ce type de code par exemple pour ‘A’ -> 65  et ‘a’ -> 97.

Gestion des Locations de Maisons

PROBLEME : 08 PTS Gestion des Locations de Maisons

Contexte

Raphaël vient d'être recruté dans une agence immobilière dans la ville de Dschang. Son rôle est de développer un système de gestion des locations de maisons pour l'agence. Ce système doit permettre de représenter les maisons disponibles à la location, de gérer les locations en cours, et de fournir des fonctionnalités avancées comme la recherche, le tri, et la sauvegarde des données.

Structures de Données

Structure Maison

Représente une maison avec les champs suivants :

  • idMaison (entier) : Identifiant unique de la maison.
  • adresse (chaîne de caractères) : Adresse de la maison.
  • prix (flottant) : Prix de location par jour.
  • estLouee (booléen) : Indique si la maison est actuellement louée.

Structure Location

Représente une location avec les champs suivants :

  • listeMaisons (pointeur vers un tableau dynamique de Maison) : Liste des maisons disponibles à la location.
  • joursLocation (pointeur vers un tableau dynamique d'entiers) : Nombre de jours de location pour chaque maison dans listeMaisons. Ce tableau doit être synchronisé avec listeMaisons : si estLouee = true pour une maison, alors joursLocation correspondant doit être > 0.
  • nombreMaisons (entier) : Nombre de maisons actuellement dans la liste.
  • capacite (entier) : Capacité actuelle du tableau dynamique (pour gérer l'allocation mémoire).

Questions

0. Donner les structures de données adéquates pour représenter une maison et une location.

1. Initialisation de la structure Location

Écrivez une fonction initialiserLocation qui initialise la structure Location avec une capacité initiale.

void initialiserLocation(Location *location, int capaciteInitiale);

2. Ajout d'une maison

Écrivez une fonction ajouterMaison qui ajoute une nouvelle maison à la liste de manière dynamique. La fonction doit retourner true si la maison est ajoutée avec succès, et false si la maison est déjà louée ou si l'ajout échoue.

bool ajouterMaison(Location *location, Maison maison);

3. Affichage des maisons

Écrivez une fonction afficherMaisons qui affiche toutes les maisons disponibles avec leurs détails, y compris le nombre de jours de location.

void afficherMaisons(Location location);

4. Modification d'une maison

Écrivez une fonction modifierMaison qui permet de modifier l'adresse et le prix d'une maison existante.

void modifierMaison(Location *location, int idMaison, char *nouvelleAdresse, float nouveauPrix);

5. Suppression d'une maison

Écrivez une fonction supprimerMaison qui supprime une maison de la liste de manière dynamique. Assurez-vous de synchroniser listeMaisons et joursLocation.

void supprimerMaison(Location *location, int idMaison);

6. Recherche d'une maison

Écrivez une fonction rechercherMaison qui retourne true si une maison est disponible (non louée) et false sinon.

bool rechercherMaison(Location location, int idMaison);

7. Recherche par adresse

Écrivez une fonction chercherParAdresse qui recherche une maison par son adresse et retourne true si elle existe.

bool chercherParAdresse(Location location, const char *adresse);

8. Tri par prix

Écrivez une fonction trierParPrix qui trie les maisons par ordre croissant de prix en utilisant le tri par insertion. Assurez-vous de synchroniser listeMaisons et joursLocation.

void trierParPrix(Location *location);

9. Gestion des jours de location

Écrivez une fonction modifierJoursLocation qui met à jour le nombre de jours de location pour une maison donnée. Si jours > 0, la maison doit être marquée comme louée (estLouee = true). Si jours = 0, la maison doit être marquée comme non louée (estLouee = false).

bool modifierJoursLocation(Location *location, int idMaison, int jours);

10. Liste des maisons louées

Écrivez une fonction maisonsLouees qui retourne une liste dynamique des maisons actuellement louées.

Maison *maisonsLouees(Location location, int *nombreLouees);

11. Sauvegarde dans un fichier

Écrivez une fonction sauvegarderMaisonsLouees qui sauvegarde les maisons louées dans un fichier nommé Location.txt.

void sauvegarderMaisonsLouees(Location location);

12. Libération de la mémoire

Écrivez une fonction libererLocation qui libère la mémoire allouée pour la structure Location.

void libererLocation(Location *location);

Différence entre un fichier et un tableau

Dans la vie réelle :
Un fichier est un document physique ou numérique qui stocke des informations de manière persistante (exemple : un livre, un dossier). Un tableau est une structure temporaire utilisée pour organiser des données (exemple : un tableau blanc, une feuille de calcul).

En informatique :
Un fichier est un ensemble de données stockées sur un support de stockage (disque dur, SSD, etc.) de manière persistante. Un tableau est une structure de données en mémoire vive (RAM) utilisée pour stocker et manipuler des données de manière temporaire.

SOLUTION : CORRECTION

 

 

Si vous avez trouvé les examens corrigés en Langage C de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

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

 

Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam