Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Discussion: Enregistrement en C

  1. #1
    Invité de passage
    Homme Profil pro samer mohamed
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Homme samer mohamed
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Enregistrement en C

    Bonjour.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include<stdio.h>
    typedef struct etudiant{
    char nom[16];
    char prenom[16];
    int age;
    float moyenne;
     
     
    }Etudiant;
    Etudiant T[10];
     
     
    main(){
           int n,i,j,indice_min;
           Etudiant a;
           printf("Donner le nombre d'etudiants");
           scanf("%d",&n);
           for (i=0;i<n;i++){
     
     
           printf("Nom       :");
           scanf("%s",&T[i].nom);
           printf("Prenom    :");
           scanf("%s",&T[i].prenom);
           printf("Moyenne   :");
           scanf("%f",&T[i].moyenne);
     
     
     
               }
                for (i=0;i<(n-1);i++){
               for(j=(i+1);j<n;j++){
                                     if(T[i].moyenne>T[j].moyenne){
                                     a=T[i];
                                     T[i]=T[j];
                                     T[j]=a;
                                     }
                                     }
                                     }
             printf("\n\tLe Nouveau tableau est \n");                         /*Fin du Tri*/
               for(i=0;i<n;i++){
     
                                  printf("\nNom %s",T[i].nom);
                                  printf("\nPrenom %s",T[i].prenom);
                                  printf("\nMoyenne %f",T[i].moyenne);
     
                                 }
     
     
     
           getchar();
     
     
           getchar();
           }
    J'ai cet enregistrement là et je veux ajouter une méthode de Recherche et Modification et Suppression. Qui peux m'aider ?

    Merci d'avance.

  2. #2
    Expert Confirmé Sénior
    Avatar de Sve@r
    Homme Profil pro Frédéric
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    4 526
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric
    Âge : 46
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 4 526
    Points : 10 119
    Points
    10 119

    Par défaut

    Citation Envoyé par mosael Voir le message
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    typedef struct etudiant{
    char nom[16];
    char prenom[16];
    int age;
    float moyenne;
     
     
    }Etudiant;
    Etudiant T[10];
    j'ai cette enrigstrement la j veux ajouter une methode de Recherche et Modification et SUpression qui peu m aider
    Bonjour
    Comment envisages-tu la "suppression" d'un élément d'un tableau à taille fixe (donc avec son nombre d'éléments invariants) ???

    Citation Envoyé par Julien Sanchez Voir le message
    Par exemple, si on dispose du tableau suivant :

    Code C :
    1
    2
    3
    4
    5
    6
    char tab[5];
    tab[0] = 'a';
    tab[1] = 'e';
    tab[2] = 'i';
    tab[3] = 'o';
    tab[4] = 'u';

    Pour savoir si le caractère 'u' appartient au tableau, il faut faire quelque chose comme :

    Code C :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (tab[0] == 'u')
      printf("u est dans le tableau\n");
     
    if (tab[1] == 'u')
      printf("u est dans le tableau\n");
     
    if (tab[2] == 'u')
      printf("u est dans le tableau\n");
     
    if (tab[3] == 'u')
      printf("u est dans le tableau\n");
     
    if (tab[4] == 'u')
      printf("u est dans le tableau\n");
    Mouais. J'ai l'impression qu'une boucle pourrait peut-être avoir ici son utilité non ?
    Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
    Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
    Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
    Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
    Dr. Adrian Rogers (1931-2005)

  3. #3
    Membre chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 120
    Points : 641
    Points
    641

    Par défaut codons, codons ...

    Bon ... un code organisé, respectant la norme, bien indenté et commenté est plus agréable à lire, évite les alertes lors de la compilation et se maintient plus facilement !

    Voici par exemple, ce que pourrait donner ton code (avec la correction d'une même erreur sur deux pointeurs) :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    #include<stdio.h>
     
    typedef struct etudiant
    {
      char nom[16];
      char prenom[16];
      int age;
      float moyenne;
    } Etudiant;
     
    Etudiant T[10];
     
    int main(int argc, char *argv[])
    {
      int n,i,j;
      Etudiant a;
     
      /** entrée nombre d'étudiants à classer */
     
      printf("Donner le nombre d'etudiants");
      scanf("%d",&n);
     
      /** limiter ce nombre à la taille du tableau */
     
      if (n>10)
        n=10;
     
      /** entrée brute des résultats */
     
      for (i=0; i<n; i++)
        {
          printf("Nom       :");
          scanf("%s",T[i].nom);
          printf("Prenom    :");
          scanf("%s",T[i].prenom);
          printf("Moyenne   :");
          scanf("%f",&T[i].moyenne);
        }
     
      /** tri des résultats */
     
      for (i=0; i<(n-1); i++)
        {
          for(j=(i+1); j<n; j++)
            {
              if(T[i].moyenne>T[j].moyenne)
                {
                  a=T[i];
                  T[i]=T[j];
                  T[j]=a;
                }
            }
        }
     
      /** affichage du tableau trié */
     
      for(i=0; i<n; i++)
        {
          printf("\nNom %s",T[i].nom);
          printf("\nPrenom %s",T[i].prenom);
          printf("\nMoyenne %f",T[i].moyenne);
        }
     
      /** attendre la frappe d'une touche */
     
      getchar();
     
      /** attendre la frappe d'une touche (encore !) */
     
      getchar();
     
      /** fin */
     
      return 0;
    }
    Ce n'est pas déjà plus sympa à lire ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 120
    Points : 641
    Points
    641

    Par défaut codons et recodons ...

    Avant de voir comment rechercher, modifier et supprimer, pourquoi ne pas utiliser la fonction de tri rapide offerte par la librairie standard , mmm ?

    Cela donne le code modifié suivant :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct etudiant
    {
      char nom[16];
      char prenom[16];
      int age;
      float moyenne;
    } Etudiant;
     
    Etudiant T[10];
     
     
    /// fonction de comparaison de deux étudiants
     
    int comparer(Etudiant *a, Etudiant *b)
    {
      return (int) (a->moyenne*100-b->moyenne*100);
    }
     
     
    /// fonction principale
     
    int main(int argc, char *argv[])
    {
      int n,i;
     
      /** entrée nombre d'étudiants à classer */
     
      printf("Donner le nombre d'etudiants");
      scanf("%d",&n);
     
      /** limiter ce nombre à la taille du tableau */
     
      if (n>10)
        n=10;
     
      /** entrée brute des résultats */
     
      for (i=0; i<n; i++)
        {
          printf("Nom       :");
          scanf("%s",T[i].nom);
          printf("Prenom    :");
          scanf("%s",T[i].prenom);
          printf("Moyenne   :");
          scanf("%f",&T[i].moyenne);
        }
     
      /** tri rapide des résultats */
     
      qsort(T,n,sizeof(Etudiant),(void *) comparer);
     
      /** affichage du tableau trié */
     
      for(i=0; i<n; i++)
        {
          printf("\nNom %s",T[i].nom);
          printf("\nPrenom %s",T[i].prenom);
          printf("\nMoyenne %f",T[i].moyenne);
        }
     
      /** attendre la frappe d'une touche */
     
      getchar();
     
      /** attendre la frappe d'une touche (encore !) */
     
      getchar();
     
      /** fin */
     
      return 0;
    }

  5. #5
    Membre chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 120
    Points : 641
    Points
    641

    Par défaut codons et répondons ...

    Alors, voici deux exemples, une fonction de recherche par le nom qui retourne l'index, et une fonction de suppression par l'index :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    #include <string.h>
     
     
    /** fonction de recherche d'un étudiant par son nom et son prénom parmi n étudiants
        retourne l'index (base 0) de l'étudiant s'il est trouvé
        sinon, retourne -1 */
     
    int rechercher(char *nom, char *prenom, int n)
    {
      int i;
     
      for (i=0; i<n; i++)
        if (!strncasecmp(nom,T[i].nom,16))
          if (!strncasecmp(prenom,T[i].prenom,16))
            break;
     
      if (i<n)
        return i;
     
      return -1;
    }
     
     
    /** fonction de suppression d'un étudiant par son index (base 0) parmi n étudiants */
     
    void supprimer(int i, int n)
    {
      if (n>=10)
        n=10;
     
      if (n<0)
        return;
     
      if (i>=n)
        return;
     
      if (i<0)
        return;
     
      for (; i<(n-1); i++)
        T[i]=T[i+1];
     
      /** RAZ facultatif */
     
      T[i].nom[0]=0;
      T[i].prenom[0]=0;
      T[i].moyenne=0;
    }
    Bien sûr, j'ai gardé tes déclarations, notamment ta déclaration globale du tableau et le nombre maximal de 10 codé en dur, mais je pense que tu devrais revoir ce point ...

    A titre d'illustration, pour supprimer de ton tableau de n élèves tous les élèves nommés Jacques MARTIN, tu exécutes le code suivant dans ta fonction principale :

    Code :
    1
    2
    3
    4
    5
    6
    7
     
     
    while ((i=rechercher("MARTIN","Jacques",n))!=-1)
      {
        supprimer(i,n);
        n--;
      }
    En t'inspirant de ce code, tu peux facilement développer une fonction modifier() et compléter ton propre code ...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •