EXERCICE VII

Structures des donnees

 

 

1.      Faire un programme d’entrer les données (nom et numéro) de deux étudiants en utilisant le type structure. Afficher les données d’étudiant après l’entré. Afficher les données d’étudiant dont le numéro est plus grand. Utiliser fonctions différentes d’entré et sortie d’information de la structure.

 

#include <stdio.h>

typedef struct

  {   char  nom[20];

       int   numero;

  } etudiant;

etudiant saisir(void);

void afficher(etudiant *);

void main()

 {     etudiant man1, man2, *s_ptr;

        printf("Entrer les données du premier étudiant ");

        man1 = saisir();

        afficher(&man1);

        printf("Entrer les données du deuxième étudiant ");

        man2 = saisir();

        afficher(&man2);

        s_ptr=(man1.numero>man2.numero)?&man1:&man2;

        printf("\nL’etudiant dont le numero est plus grand:\n");

        afficher(s_ptr);

 }

etudiant saisir(void)

      {             etudiant a;

                    printf("\n nom=> ");

                    gets(a.nom);

                    printf(" numero => ");

                    scanf("%d",&a.numero);

                    fflush(stdin);

                    return (a);

        }

void afficher(etudiant *ptr_str)

        {   printf("Nom d’étudiant:   %s\n",ptr_str -> nom);

            printf("Numero d’ étudiant:  %d\n", ptr_str -> numero);

        }

 

 

2.      Modifier le programme de p.1 en ajoutant un troisième champ de la structure - note.  Afficher l’étudiant dont la note est plus petite.

 

3.      Faire un programme de création d’un tableau de structures - étudiants (structures ont les champs : nom et numéro). Le nombre maximal d’éléments du tableau est 30. Déterminer l'étudiant avec le numéro maximal et afficher à l'écran l'information d'étudiant trouvé. Utiliser fonctions différentes: 1) d’entré et sortie d’information d’une structure (utiliser les fonctions saisir et afficher de p.1) ; 2) d’entré et sortie du tableau des structures (entrer_tab et afficher_tab) ; 3) de détermination d’étudiant ayant le  numéro maximal (max_numero).

 

#include <stdio.h>

#define MAX 30

 typedef struct

  {               char  nom[20];

                  int   numero;

  } etudiant;

 etudiant saisir(void);

 void afficher(etudiant *ptr_str);

 void afficher_tab(etudiant *,int);

 int entrer_tab(etudiant *t );

 etudiant * max_numero(etudiant *ptr_str,int n);

 void main()

 {     etudiant tab[MAX], *s_ptr;

       int n;

        printf("Entrer les donnees des etudiants\n");

        n=entrer_tab(tab);

        printf("Les etudiants sont.\n");

        afficher_tab(tab,n);

        s_ptr = max_numero(tab,n);

        printf("\nL’etudiant dont le numero est plus grand:\n");

        afficher(s_ptr);

 }

etudiant saisir(void)

      {     etudiant a;

            printf("\n nom=> ");

            fflush(stdin);

             gets(a.nom);

             printf(" numero => ");

             scanf("%d",&a.numero);

             fflush(stdin);

             return (a);

        }

void afficher(etudiant *ptr_str)

       {    printf("Nom d’etudiant:   %s\n",ptr_str -> nom);

            printf("Numero d’etudiant:  %d\n", ptr_str -> numero);

       }

void afficher_tab(etudiant *ptr_str,int n)

        {   int i;

            for(i=0;i<n;i++,ptr_str++)

                     { afficher(ptr_str);

                     }

        }

int entrer_tab(etudiant *t )

       {    int i,n;

            do{

                              printf("Entrer nombre d'etudiants:");

                              scanf("%d",&n);

                   }while(n>MAX);

            for(i=0;i<n;i++,t++)

                   {  printf("Etudiant %d:",i+1);

                      *t=saisir();

                   }

            return n;

        }

etudiant * max_numero(etudiant *ptr_str,int n)

        {   int i,max=ptr_str->numero;

            etudiant *temp= ptr_str;

            for(i=0;i<n;i++,ptr_str++)

                                {

                                           if(ptr_str->numero > max)

                                                      { max= ptr_str->numero;

                                                        temp=ptr_str;

                                                      }

                                }

            return temp;

        }

 

4.      Modifier le programme de p 3 en ajoutant un troisième champ de la structure - note.  Faire une fonction nouvelle d’afficher l’étudiant dont la note est plus petite.

5.      Faire un programme de création d’un tableau d’étudiants (structures ayants les champs nom, numéro et note) en utilisant un tableau des pointeurs sur les structures.  Afficher le tableau cree. Utiliser fonctions différentes de: 1) remplissage du tableau – saisir ; 2) affichage du tableau – afficher.

#include<stdio.h>

#include <string.h>

#include <stdlib.h>

#define MAX 30

#define STOP "*"

typedef struct

 {   char nom[80];

      int   numero;

      float note;

 } etudiant;

int saisir(etudiant *s[]);

void afficher(etudiant *s[],int n);

void main()

 {    etudiant *t[MAX];

      int n;

      n=saisir(t);

      afficher(t,n);

      free (t);

 }

 int saisir(etudiant *s[])

  {    int i=0;

       char t[10];

       while(1)

        {          printf("Entrer etudiant %d\n",i+1);

                   s[i]=(etudiant *)malloc(sizeof(etudiant));

                   if(s[i]==NULL) { printf("Pas de place.\n"); exit(1); }

                   printf("Entrer nom ou bien %c\n",STOP);

                   if(strcmp(gets(s[i]->nom),STOP)==0||i==MAX)break;

                   printf("Entrer numero:");

                   s[i]->numero=atoi(gets(t));

                   printf("Entrer note:");

                   s[i]->note=atof(gets(t));

                   i++;

        }

       return i;

  }

 void afficher(etudiant *s[],int l)

  {    int i;

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

                  printf("%s\t%d\t%6.2f\n",s[i]->nom,s[i]->numero,s[i]->note);

  }   

 

  1. Modifier le programme de p.5 en ajoutant une fonction nouvelle de déterminer et afficher les étudiants avec une note supérieure à une note donnée.
  2. Déclarer un tableau d'éléments de type structuré (médicaments). Chaque structure est composée des champs suivants: nom, prix, année de la production du médicament.

            Faire les actions suivantes:

1.      Remplir le tableau ;

2.      Afficher le tableau ;

3.      Afficher les informations des médicaments, ayants un nom donné, produits pendant une année  donnée dont le prix est inférieur à un prix donné ;

4.      Calculer le prix moyen des médicaments ;

5.      Trier les médicaments selon le champ prix en ordre croissant.

6.      Effacer les médicaments avec le prix supérieur  à un prix donné.

 

Utiliser les fonctions suivantes: a) remplissage du tableau; b) affichage du tableau; c) pour toutes les actions différentes.

 

Faire les deux modèles de traitement :

1.      En utilisant un tableau des pointeurs sur les structures (le nombre maximal des structures 50) ;

2.      En utilisant un tableau dynamique.