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

Langage Pascal Discussion :

[LG]conseil manipulation d'enregistrements


Sujet :

Langage Pascal

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 78
    Points : 70
    Points
    70
    Par défaut [LG]conseil manipulation d'enregistrements
    Salut a tous, voila j'aime a approfondir les td que nous donne nos proffesseurs et je doute sur l'efficacité d'une de mes fonctions, il s'agit en fait d'une fonction destiner a supprimmer un element d'un enregistrement, voici mon enregistrement:







    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type etudiant = record
         nom, prenom :string;
         note :real;
    end;
     
    type groupe = record
         n:integer;
         t:array [1..nmax] of etudiant;
    end;
    la fonction doit en fait me premettre de supprimmer un des etudiants du groupe et voivi comment j'ai procédé :
    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
    procedure supprimer_etudiant(g:groupe;nom,prenom:string);
    var i,k:integer;
    var answer:string;
    begin
         k:=0;
         write('entrer le nom de l''étudiant que vous voulez supprimer : ');
         readln(nom);
         write('entrer le prenom de l''étudiant que vous voulez supprimer : ');
         readln(prenom);
         for i:= 1 to g.n do begin
             if (g.t[i].nom=nom) and (g.t[i].prenom=prenom) then begin
                k:= i;
                break;
             end;
             if k=0 then writeln('l''etudiant n''appartient pas a ce groupe impossible de le supprimer !!');
         end;
         writeln('ATTENTION voulez vous vraiment supprimer : ');
         write(g.t[k].nom,' ',g.t[k].prenom,'  ? (yes/no)');
         readln(answer);
         if answer= 'yes' then begin
            g.t[k]:=g.t[g.n];
            g.n := g.n-1;
         end;
    end;
    en fait je me suis dit que je pouvais echanger la place de l'etudiant que je voulais supprimer avec le dernier etudiant du tableau puis réduire l'effectif du groupe et que cela supprimerait peut etre la derniere entrée, mais je ne suis pas du tout sur que cela fonctionne tres bien, donc si vous pouvez me dire si cela peut marcher et si ca ne marche pas me proposer une alternative je vous en serai tres reconnaissant.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Non je crois que ca marchera très bien... Par contre, c'est pas une erreur, mais une (forte) suggestion : pour ta boucle de recherche, il vaut mieux utiliserun while plutôt qu'un for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i:=1;
    while ((g.t[i].nom<>nom) and (g.t[i].prenom<>prenom) and i<n)
    do i:=i+1;
    if i>=n then write('l''étudiant n''existe pas...');
    A la fin de la boucle, g[i] donne l'étudiant qui a le nom spécifié, si i < n.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 78
    Points : 70
    Points
    70
    Par défaut
    oui merci ca marche beaucoup mieux comme ca !!!!

  4. #4
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Pour éviter de retomber par hasard sur cette entrée, je lui affecterais une valeur nulle : g.t[g.n].prenom/nom := ''; mais c'est vrai que ce n'est pas très utile vu qu'il y a fort peu de chance que tu arrives par erreur sur cette valeur dans la suite de ton programme (s'il est programmé convenablement).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conseil: manipulation des tables intermédiaires
    Par aiss57 dans le forum Requêtes
    Réponses: 1
    Dernier message: 29/04/2009, 10h55
  2. Demande de conseils Manipulation images
    Par Tyson77 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 03/06/2008, 15h52
  3. manipulation des Enregistrements Dataliste
    Par aymane19 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 22/05/2008, 23h45
  4. Problème de manipulation d'enregistrement dans sql server
    Par labvivi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/03/2007, 12h35
  5. conseil numéro d'enregistrement personalisé
    Par diden138 dans le forum Delphi
    Réponses: 3
    Dernier message: 15/01/2007, 09h12

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