Forum programmation
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 Application : Les tris et les recherches

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:11

Question N°8:
c'est le même principe que la procédure tri_par_nom, la seule différence c'est la condition de la boucle While qui devien :
Code:
While (Ins[j-1]>f2)AND(j>1) DO

voiçi la procédure compléte
Code:
procedure  tri_par_ins(var Nom:TNom;var Ins:TIns;var Moy:TMoy;n:integer);
          var
              i, j:integer;
              f1: string;  {frontière de nom }
              f2: word;    {frontière de insc }
              f3: real;    {frontière de moy }
          begin
                for i := 2 to N do
                begin
                      f1 := Nom[i];
                      f2 := Ins[i];
                      f3 := Moy[i];
                      j := i ;
                      while (Ins[j-1] > f2) and(j>1) do
                              begin
                              Nom[j] := Nom[j-1] ;
                              Ins[j] := Ins[j-1] ;
                              Moy[j] := Moy[j-1] ;
                              j := j - 1 ;
                              end;
                Nom[j] := f1 ;
                Ins[j] := f2 ;
                Moy[j] := f3 ;
                end;
          end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:14

Question N°9:

Code:
procedure  tri_par_moy(var Nom:TNom;var Ins:TIns;var Moy:TMoy;n:integer);
          var
              i, j:byte;
              f1: string;  {frontière de nom }
              f2: word;    {frontière de ins }
              f3: real;    {frontière de moy }
          begin
                for i := 2 to N do
                begin
                      f1 := Nom[i];
                      f2 := Ins[i];
                      f3 := Moy[i];
                      j := i ;
                      while (Moy[j-1] < f3) and(j>1) do
                              begin
                              Nom[j] := Nom[j-1] ;
                              Ins[j] := Ins[j-1] ;
                              Moy[j] := Moy[j-1] ;
                              j := j - 1 ;
                              end;
                Nom[j] := f1 ;
                Ins[j] := f2 ;
                Moy[j] := f3 ;
                end;

          end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:39

Question N°10 :
Code:
procedure insertion(var Nom:TNom;var Ins:TIns;var Moy:TMoy;var n:integer);
          var                                          {n sera changé après insertion!}
            p,i:byte;
            pe:integer;
            ch, temp1:string[30];
                temp2: word;
                temp3: real;
          begin
              {lecture dans temp1, temp2,temp3}
              {__________________________________________________}
                      writeln(' taper les données de l''élève à inserer:');
                      repeat
                          write('Nom:':12);
                          readln(temp1);
                        until verif_nom(temp1);

                        repeat
                          write('insc:':12);
                          readln(ch);
                          val(ch,temp2,pe);
                        until (pe=0) and (verif_ins1(t2,n,temp2))
                                    and (verif_ins2(temp2));
                        repeat
                          write('Moyenne:':12);
                          readln(ch);
                          val(ch,temp3,pe);
                        until verif_moy(temp3)and (pe=0);

                        writeln;
              {________________________________________________________}

              {--------------- recherche de la bonne place p ----------}
              p:=1;
              while (temp1 > Nom[i]) and (p<=n) do p:=p+1;
              {---------------------------------------------------------}

              {----------------décalage vers la droite pour vider la bonne place-------}
              for i:= n+1 downto p+1 do begin
                                        Nom[i]:= Nom[i-1];
                                        Ins[i]:= Ins[i-1];
                                        Moy[i]:= Moy[i-1];
                                        end;
              {---------------------------------------------------------}

              {------------------insertion des temp --------------------}
              Nom[p]:=temp1;
              Ins[p]:=temp2;
              Moy[p]:=temp3;
              {---------------------------------------------------------}

              {augmenter la taille par une case!}
              n:=n+1;
          end; {fin insertion}


RQ : cette solution n'est pas la mienne c'est mon prof d'info qui l'a faite
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:45

Question N°11 :

Code:
procedure suppression(var Nom:TNom;var Ins:TIns;var Moy:TMoy;var n:integer);
          var                                         
            i,p:byte;
            pe:integer;
            ch :string[30];
            temp2: wo0rd;
            confirmation:char;
             
          begin
                (* on lit, au début, le numéro d'inscription de l'élèves *) 
              writeln(' taper l''inscription de l''élève à supprimer:');
              repeat
                write('insc:':12);
                readln(ch);
                val(ch,temp2,pe);
              until (pe=0) and (verif_ins2(temp2));

              writeln;
                (* on cherche la position du numéro d'inscription donné *)
              p:=0;
              repeat
                    P:=P+1;
              until (temp2 = t2[P]) or (p=n);
               
                (* si le numéro figure dans le tableau on commence la procédure de suppressioin *)
              if (temp2 = t2[P]) then begin
                                              (* on demande la confirmation de la suppression *)
                                            writeln('êtes-vous sûr de supprimer l''élève:');
                                            writeln(t1[p],' de num: ',t2[p],  ' ?');
                                            writeln('A: Annuler, S:Supprimer  ?');
                                            confirmation:=readkey;
                                            case upcase(confirmation) of
                                              'A': writeln(' suppression annulée! '); (* si l'utilisateur appui sur 'a' ou 'A' la suppression est annulée *)
                                               
                                              'S': begin (* si l'utilisateur appuit sur 's' ou 'S' on supprime l'élève *)
                                                {decaler vers la gauche }
                                                      for i:=p to n-1 do
                                                        begin (* ici on décale toutes les données qui sont aprés celles de l'élève *)
                                                          t1[i]:=t1[i+1];
                                                          t2[i]:=t2[i+1];
                                                          t3[i]:=t3[i+1];
                                                          end;
                                                (* on diminue la taille par une case *)
                                                      n:=n-1;
                                                    writeln(' suppression réalisée!');
                                               
                                                  end;
                                            end;
                                      end;

             
          end; {fin suppression}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:46

Question N°12:

Code:

function mention(m:real):string;
        begin
              if m<9 then  mention      :='REFUSE  --      '
              else if m<10 then  mention:='ADMIS  RACHETE  '
              else if m<12 then  mention:='ADMIS  PASSABLE  '
              else if m<14 then  mention:='ADMIS  ASSEZ BIEN'
              else if m<16 then  mention:='ADMIS  BIEN      '
              else if m<18 then  mention:='ADMIS  TRES BIEN '
              else  mention            :='ADMIS  EXCELLENT ';
        end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 15:47

ça suffit pour mnt
inchallah je finirais le reste ce soirs
a+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 20:07

je reprend

Question N°13:

Code:
procedure admis;
          var i:integer;
          begin
              writeln('  ** LISTES DES ADMIS  **');
              writeln(' ':10,'NOMS',' ':20,'ISCRI',' ':20,'MOYENNE',' ':20,'RESULTAT&MENTION');
              for i:=1 to n do
                  if Moy[i] >=9 then
                  writeln(' ':10,Nom[i],' ':20,Ins[i],' ':20,Moy[i]:0:2,' ':20,mention(moy[i]));
              writeln;
          end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 20:10

Question N°14 :

Code:
procedure refuses;
          var i:integer;
          begin
              writeln('  ** LISTES DES REFUSES  **');
              writeln(' ':10,'NOMS',' ':20,'ISCRI',' ':20,'MOYENNE','':20,'RESULTAT&MENTION');
              for i:=1 to n do
                  if Moy[i] < 9 then
                  writeln(' ':10,Nom[i],' ':20,Ins[i],' ':20,Moy[i]:0:2,' ':20,mention(moy[i]));
              writeln;
          end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 20:54

si vous revoyez l'énancé de l'application, vous remarquerez que dans le menu il y a deux choix que qu'on n'a pas encore traiter :

  • la recherche par nom
  • la recherche par N° d'inscription
voiçi la procédure qui fait le premier trairement
Code:
procedure recherche_par_nom(Nom:TNom);
 var
    temp1:string[30];
    existe:boolean;
    i:integer;
 begin
      write('taper le nom à chercher: ');
      readln(temp1);
      existe:=false;
      for i:=1 to n do
          if  temp1= Nom[i]then begin
                                existe:=true;
                                writeln(Nom[i]:20,Ins[i]:10,Moy[i]:10:2,mention(Moy[i]):30);
                                end;

      if existe=false then writeln(' Ce nom ne figure pas dans la liste!');
 end;

et voiçi la seconde
Code:
procedure recherche_par_ins(Ins:TIns);
 var
    temp2:integer;
    p:integer;
 begin
      write(' Taper le numero d''inscription à chercher: ');
      readln(temp2);
      p:=0;
              repeat
                    p:=p+1;
              until (temp2 = Ins[p]) or (p=n);

              if (temp2 = Ins[p])
              then                   
                    writeln(Nom[p]:20,Ins[p]:10,Moy[p]:10:2,mention(Moy[p]):30)

              else writeln(' Cette inscription ne figure pas dans la liste!');
 end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 20:58

Question N°15 :
Code:
procedure menu;
          var choix:byte;
          begin
            writeln('**Bienvenue dans l''application des élèves de la 3e Sc Info 2**');
            writeln;
            writeln(' 1 :  Trier les données par ordre alphabétique croissant des noms');
            writeln(' 2 :  Trier les données par ordre croissant des numéros d''inscription');
            writeln(' 3 :  Trier les données par ordre décroissant des moyennes');
            writeln(' 4 :  Afficher la liste des admis');
            writeln(' 5 :  Afficher la liste des refusés');
            writeln(' 6 :  Chercher un élève par son numéro d''inscription');
            writeln(' 7 :  Chercher un élève par son nom');
            writeln(' 8 :  Ajouter un élève');
            writeln(' 9 :  Supprimer un élève');
            writeln;
            writeln;
            write('Votre choix:'); choix:=readkey;
            case choix of
              1: begin
                    clrscr;
                    tri_par_nom(Nom,Ins,Moy,n);
                    writeln(' Liste selon l''ordre alphabétique:');
                    affiche_tout;
                  end;
              2: begin
                    clrscr;
                    tri_par_ins(Nom,Ins,Moy,n);
                    affiche_tout;
                  end;
              3: begin
                    clrscr;
                    tri_par_moy(Nom,Ins,Moy,n);
                    writeln(' Liste par ordre croissant des moyennes:');
                    affiche_tout;
                  end;
              4: begin
                    clrscr;
                    writeln(' Liste des admis:');
                    admis;
                  end;
              5: begin
                    clrscr;
                    writeln(' Liste des refusés:');
                    refuses;
                  end;
              6: begin
                    clrscr;
                    recherche_par_ins(Ins);
                  end;
              7: begin
                    clrscr;
                    recherche_par_nom(Nom);
                  end;
              8: begin
                    clrscr;
                    insertion(Nom,Ins,Moy,n);
                  end;
              9: begin
                    clrscr;
                    suppression(Nom,Ins,Moy,n);
                  end;
                end;
end;

j'ai utilisé ici une procédure nommé affiche_tout la voiçi :
Code:
procedure affiche_tout;
          var i:byte;
          begin
              for i:=1 to n do
                    writeln(t1[i]:20,t2[i]:10,t3[i]:10:2,mention(t3[i]):30);
              writeln;
          end;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 21:02

et maintenant le programme principale :


Code:
program  application;

uses wincrt ;
const
    NMax=100;
    LMax=30;
type
    TNom= array[1..nmax] of string[30];
    TIns= array[1..nmax] of integer;
    TMoy= array[1..nmax] of real;
var
  Nom: TNom;
  Ins: TIns;
  Moy: TMoy;
  n: integer;
  c:char;
....
....
....
BEGIN
taille(n);
remplir(Nom,Ins,Moy,n);

repeat
  clrscr;
  menu;
  writeln;
  write('  Taper une touche pour retourner au menu',#13 ,'  Q: Quitter ');
  c:=readkey;
until upcase(c)= 'Q';

donewincrt;

END.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 21:03

voilà j'ai fini
si vous avez besoin d'aide signalez le moi
j'attend vos réponse Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
benha21
utilisateur professionnel
utilisateur professionnel
avatar

Nombre de messages : 349
Age : 31
Date d'inscription : 28/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 23:16

Bon boulot Chak, tu assure mec, je ne sais pas si ce que tu a fait est bon, mais franchement c'est un travail de taille et de qualité, bonne continuation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://benha21.skyblog.com
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Jeu 15 Fév - 23:17

benha21 a écrit:
Bon boulot Chak, tu assure mec, je ne sais pas si ce que tu a fait est bon, mais franchement c'est un travail de taille et de qualité, bonne continuation.

merci coz pour l'encouragement Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: Re: Application : Les tris et les recherches   Ven 16 Fév - 14:52

vraiment impecable, merci mon ami

ataw n7awel n3awed ne5dmou taw
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
benha21
utilisateur professionnel
utilisateur professionnel
avatar

Nombre de messages : 349
Age : 31
Date d'inscription : 28/01/2007

MessageSujet: Re: Application : Les tris et les recherches   Ven 16 Fév - 15:52

mtcs a écrit:
vraiment impecable, merci mon ami

ataw n7awel n3awed ne5dmou taw

Il faut toujours essayer, bon courage mtcs.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://benha21.skyblog.com
Contenu sponsorisé




MessageSujet: Re: Application : Les tris et les recherches   

Revenir en haut Aller en bas
 
Application : Les tris et les recherches
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» (résolu)recherches effectuées dans la barre déroulante"recherche" de Neuf
» application: executer - regedit
» Démarrage application impossible ... [RESOLU]
» Peut-on nettoyer sans risques le dossier Local Settings\Application Data\ ?
» Application "La Girafe"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum programmation :: Programmation :: Delphi & Pascal :: Pascal :: Exercices-
Sauter vers: