Dev-pascal carnet d'adresse

Fermé
degseb Messages postés 353 Date d'inscription dimanche 20 mai 2007 Statut Contributeur Dernière intervention 6 juillet 2010 - 30 déc. 2007 à 15:56
 grad - 10 janv. 2008 à 19:07
Bonjour,

J'ai un petit problème, pour mon examen de language de programmation, je dois faire un carnet d'adresses !

j'ai des champ nom, prenom, num téléphonne etc... mais mon champs e-mail bloque pourquoi ??? que dois-je faire ??


merci d'avances voici le code

Ps je sais qu'il est pas très propre ;-) petit problème d'indentation

program agenda;

{Réalisation Degreve Sébastien - http://online.freezee.org}

uses crt;

const n = 40;

type adresse = record
     rue: string[45];
     numero: integer;
     codepostal: integer;
     ville: string[30];
     pays: string[25];
     end;


type telephone = record
     prefixeloc: integer;
     numero: longint;
     end;


type personne = record
     status :boolean;
     nom: string[35];
     prenom: string[35];
     adr: adresse;
     tel: telephone;
     end;

type email = record
     adresses: string[45]
     end;


var agend: array[1..n] of
personne; //table de personne

var index: array[1..n] of
integer; //table d'index pour le tri

var ct,q: integer;

var t,e,z,nn: char;




    procedure
affiche(x,y:integer);

    var i:integer;

    begin

         if (y) = 0 then

         begin

              for i:=1 to x do

              begin

                   if (agend[index[i]].status) then

                   begin

                 
writeln;
write('#',i);
writeln;
writeln('NOM       : ',agend[index[i]].nom,'');
writeln('PRENOM    : ',agend[index[i]].prenom,'');
writeln('ADRESSE   : ',agend[index[i]].adr.rue,'',agend[index[i]].adr.numero,'');
writeln('            ',agend[index[i]].adr.codepostal,'',agend[index[i]].adr.ville,'');
writeln('            ',agend[index[i]].adr.pays,'');
writeln('TELEPHONE: 0',agend[index[i]].tel.prefixeloc,'/',agend[index[i]].tel.numero,'');
writeln('EMAIL:      ',agend[index[i]].email.adresses,'');
writeln;

                   end;

              end;

         end




         else

         begin

              writeln;
              write('#',y);
              writeln;
              writeln('NOM : ',agend[index[y]].nom);
              writeln('PRENOM   : ',agend[index[y]].prenom,'');
              writeln('ADRESSE  : ',agend[index[y]].adr.rue,'',agend[index[y]].adr.numero,'');
              writeln('',agend[index[y]].adr.codepostal,'',agend[index[y]].adr.ville,'');
              writeln('       ',agend[index[y]].adr.pays,'');
              writeln('TELEPHONE: ',agend[index[y]].tel.prefixeloc,'/',agend[index[y]].tel.numero,'');
              writeln('EMAIL:      ',agend[index[y]].email.adresses,'');
              writeln;

         end;

    end;




    procedure
recherche(x:integer);

    var name: string[35];

        i: integer;

    begin

         i:=1;

         writeln('Qui voulez-vous chercher ?');
         write('NOM: ');
         readln(name);
         writeln;

         while((i) < x)
         and ((agend[index[i]].nom)<>(name)) do i:=i+1;

         if(agend[index[i]].nom) = (name) then

         begin

              write('Voici la personne: ');

              affiche(0,i);

         end

         else

           
          write('Personne non trouvee !');

    end;


    procedure

    encodage(x:integer);
    var i: integer;

    begin

             
              agend[x].status:=true;

              write('NOM: ');
             
              readln(agend[x].nom);

              for i:=1 to Length(agend[x].nom) do agend[x].nom[i]:=upcase(agend[x].nom[i]);

write('PRENOM: ');
readln(agend[x].prenom);
agend[x].prenom[1]:=upcase(agend[x].prenom[1]);
writeln('');
writeln('ADRESSE ');
writeln('--------');
writeln('');
write('RUE:');
readln(agend[x].adr.rue);
agend[x].adr.rue[1]:=upcase(agend[x].adr.rue[1]);
write('NUMERO :');
readln(agend[x].adr.numero);
write('CODE POSTAL: ');
readln(agend[x].adr.codepostal);
write('VILLE: ');
readln(agend[x].adr.ville);
agend[x].adr.ville[1]:=upcase(agend[x].adr.ville[1]);
write('PAYS: ');
readln(agend[x].adr.pays);
agend[x].adr.pays[1]:=upcase(agend[x].adr.pays[1]);
writeln('');
writeln('NUMERO DE TELEPHONE: ');
Writeln('--------');
writeln('');
write('CODE REGIONAL: ');
readln(agend[x].tel.prefixeloc);
write('NUMERO: ');
readln(agend[x].tel.numero);
writeln;writeln;
Writeln('');
writeln('Adresse email');
readln(agend[index[x]].email.adresses,);
writeln;writeln;

   end;




   procedure

   tri(x:integer; p:char);
   var i,j,k,e,min,buffer:
   integer;

   begin


        case (p) of

             'n':begin


                 for i:=1 to x-1 do

                 begin
                 min:=i;
                 for j:=i+1 to x do

                     
                    begin

                    k:=1;
                    while (agend[index[j]].nom[k])=(agend[index[min]].nom[k]) do k:=k+1;
                     if (agend[index[j]].nom[k])<(agend[index[min]].nom[k]) then min:=j;

                  end;

                         
                  if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;




                 end;//nom

             'p':begin


                 for i:=1  to x-1 do

                 begin

                     
min:=i;




                      for  j:=i+1 to x do

                     
        begin

                         
        if (agend[index[j]].prenom[1])<(agend[index[min]].prenom[1]) then
        min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;




               
end;//prenom
             'p':begin


                 for i:=1  to x-1 do

                 begin

                     
min:=i;




                      for  j:=i+1 to x do

                     
begin

                         
 if (agend[index[j]].prenom[1])<(agend[index[min]].prenom[1]) then
min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;




               
end;//prenom

             'e':begin




                 for i:=1 to x-1 do

                 begin

                     
min:=i;




                      for j:=i+1 to x do

                     
begin

                         
 if
(agend[index[j]].email.adresses)<(agend[index[min]].email.adresses)
then min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;

               
end;//adresse email

             'v':begin




                 for i:=1
to x-1 do

                 begin

                     
min:=i;




                      for
j:=i+1 to x do

                     
begin

                         
 if (agend[index[j]].adr.ville[1])<(agend[index[min]].adr.ville[1])
then min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;

               
end;//ville

             'l':begin

                 for i:=1 to x-1 do

                 begin

                 min:=i;
                      for j:=i+1 to x do

                     
begin

                         
 if (agend[index[j]].adr.pays[1])<(agend[index[min]].adr.pays[1])
then min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;

               
end;//pays

             't':begin




                 for i:=1 to x-1 do

                 begin

                 min:=i;

                      for j:=i+1 to x do

                     
begin

                         
 if
(agend[index[j]].tel.prefixeloc)<(agend[index[min]].tel.prefixeloc)
then min:=j;

                      end;

                         
 if (min)<>(i) then

                         
 begin

                         
 buffer:=index[i];

                         
 index[i]:=index[min];

                         
 index[min]:=buffer;

                         
 end;

                 end;

                 end;
//telephone

       end //case




   end; //procedure tri

begin

     ct:=0;

     t:='z';




     for q:=1 to n do

         index[q]:=q;




     writeln('---===PROGRAMME AGENDA ===---');

     repeat

     begin
     writeln;writeln;writeln;
     writeln('Que voulez-vous faire ?:');
     writeln('------------------------');
     writeln;
     writeln('A Ajouter une entree dans l''agenda');
     if (ct)>0 then

     begin

          writeln('M Modifier une entre dans l''agenda');
          writeln('R Chercher une  personne dans l''agenda');
          writeln('S Supprimer une entree de l''agenda');
          writeln('T Trier l''agenda');

     end;


     writeln('Q Quitter le programme');
     writeln;
     writeln;
     write('Votre choix: ');
     readln(t);
     t:=upcase(t);




     case (t) of

          'A':begin

              ct:=ct+1;

              encodage(ct);

              end;




          'M':t:=t;

          'R':recherche(ct);




          'S':t:=t;




          'T':begin

              writeln('Quel tri voulez-vous effectuer ?:');
              writeln('Par nom(n), par prenom(p), par code postal(c),');
              writeln('par ville(v), par pays(l), par telephone(t), par email (e) ?:');
              readln(z);
              tri(ct,z);

              end;


          'Q':begin

              write('ETES-VOUS SUR ? Oui(1) / Non(2): ');
              readln(q);

              if (q) = 1
then

                 
nn:='Q';

              end;

     end;

     writeln('L''Agenda contient actuellement: ');
     affiche(ct,0);

     end;

     until (nn) = 'Q';




end.


A voir également:

3 réponses

bon je suis pas un ptit génie du pascal je suis en bac +1 donc je galère un peu (j'ai d'ailleurs mon exam demain ca va être un vrai génocide ^^)

mais par hasard... dans tes types t'aurais pas oublier de mettre email ???
0
Utilisateur anonyme
10 janv. 2008 à 18:42
bon je suis pas un ptit génie du pascal je suis en bac +1 donc je galère un peu (j'ai d'ailleurs mon exam demain ca va être un vrai génocide ^^)

mais par hasard... dans tes types t'aurais pas oublier de mettre email ???


en tout cas readln(agend[index[x]].email.adresses,); ya une virgule en trop (ligne 198)
0
Je crois que dans type il ne faut pas faire les deux points : mais un "égal" =
assi ce programme ne vas faire que stocker les données/résultats temporairement , pour les garder, il faut qu'ils soient en mémoire auxilière ( disque dur) en créent un fichier
si tu ne sais pas comment créer un fichier tu visites ce site ---> site
0