IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Enregistrement en C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Enregistrement en C
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mosael Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

Discussions similaires

  1. Perte d'enregistrements
    Par AnnSo dans le forum Paradox
    Réponses: 15
    Dernier message: 06/08/2006, 23h39
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. Enregistrer un RichEdit dans un .Txt
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2002, 11h52
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo