degseb
Messages postés353Date d'inscriptiondimanche 20 mai 2007StatutContributeurDerniè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.
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