je suis embarrassé par la gestion des kractère en pascal - Delphi/Pascal - Programmation
Marsh Posté le 13-02-2007 à 16:01:23
edit : tien! J'ai mal lu le premier post et j'ai dit que des aneries.
Marsh Posté le 19-02-2007 à 10:32:38
Salut à tous je voulais vous demander comment faire pour concerver les données entrée par un utilisateur.
Mon programme est censé permettre la création d'un arbre généalogique dynamique. Je suis en core au début. Voici le programme.
program projet;
uses crt;
type
ensemble= set of char;
Const CValide : Ensemble= ['+',' ','*','-','/','0','1','2','3','4','5','6','7','8','9','A','a','z','e','r','t','y','u','i',
'o','p','q','s','d','f','g','h','j','k','l','m','','w','x','c','b','n','B','C','D','E','F'];
type element= string;
ptr = ^sommet;
sommet = record
Pr:ptr;
Pf:ptr;
Fr:ptr;
Gen:integer;
num:integer;
Val:element;
end;
fil= record
deb:ptr;
fin:ptr;
end;
function noms(e:integer):string;
var tab:array[1..10] of char;
c:char;
i:integer;
begin
for i:=1 to 10 do tab[i]:=' ';
i:=1;
writeln('cbon');
c:=' ';
while (c in cvalide) do
begin
write('');
c:= readkey;
if (c in cvalide) then
begin
write(c);
tab[i]:=c;
end;
i:=i+1;
end;
noms:=tab;
end;
procedure defiler( F:fil);
var F1,Aux:ptr;
begin
F1:=@F.deb;
F.deb^:= F.deb^.fr^;
F1^.fr:= nil;
end;
procedure enfiler (A:element;F:fil);
var nouv:sommet;
un_pointeur:ptr;
begin
nouv.Pr:=nil;
nouv.Fr:=nil;
nouv.Pf:=nil;
nouv.val:='';
nouv.num:=0;
nouv.val:=A;
F.deb^.Fr:=@nouv;
F.fin^.Fr:=nil;
F.fin:=@nouv;
end;
function file_vide(F:fil):boolean;
begin
If F.deb =nil then
file_vide:=true
else file_vide:=false;
end;
function existe_fils(f:sommet;A:sommet):boolean;
begin
if f.Pf=nil then
existe_fils:=false
else existe_fils:=true;
end;
function lire(a:string):string;
begin
read(a);
end;
function existe_frere(f:sommet;A:sommet):boolean;
begin
if f.Fr=nil then
existe_frere:=false
else existe_frere:=true;
end;
var nouv:sommet;
function creersommet(a:integer):ptr;
var u:sommet;
p:ptr;
begin
u.val:=' ';
u.pr:=nil;
u.fr:=nil;
u.pf:=nil;
u.num:=0;
p:=@u;
creersommet:=p;
end;
{creer_sommet:
nouv.Pr:=nil;
nouv.Fr:=nil;
nouv.Pf:=nil;
nouv.val:='';
nouv.num:=0;}
var car,car1:char;
k:string;
W,Z,X:sommet;
nb,j:integer;
procedure enfants(nom_pere:string;n:integer);
var nouv:sommet;
begin
end;
begin
clrscr;
writeln('entrer le nom de l anctre');
X.Pr:=nil;
X.Fr:=nil;
X.Pf:=nil;
X.val:=noms(2);
X.num:=0;
k:=X.val;
writeln(k);
writeln('est ce que ',k ,'a eu des enfants:Y / N');
car :=readkey;
if car='y' then
begin
writeln('entrer le nom de son 1er Fils');
W.val:=noms(2);
W.Pr:=nil;
W.Fr:=nil;
W.Pf:=nil;
W.num:=0;
X.Pf:= @W ;
k:=W.val;
writeln('',k,' a t il des freres?:Y / N');
car1 :=readkey ;
if car1='y' then
begin
writeln('entrez le nombre');
read (nb);
j:=1;
while (j<=nb) do
begin
writeln('entrez le nom du ',j,'me frre de ',k,'');
Z.val:=noms(2);
Z.Pr:=nil;
Z.Fr:=nil;
Z.Pf:=nil;
Z.num:=0;
W:=W.fr^;
j:=j+1;
end;
end;
end;
end.
en fait ce n'est qu'une partie test j'aimerait pouvoir stocker en mémoire les contenues des variables X, W et Z afin de pouvoir les réutilisées, sinon à un individu dans l'arbre crée va correspondre une variable ce qui n'est pas bon du tout.
Aussi j'aimerai savoir si mes syntaxe son bonne.
Marsh Posté le 19-02-2007 à 19:33:09
molion1 a écrit : jsais pas comment les enlever. |
en placant ton code entre les balise appropriées:
Code :
|
C'est l'icone C/C++ quand tu édite ton texte
A part ça, si tu ne fait pas l'effort d'isoler un peu le code qui merdoi, n'espère pas que nous ayons le courage de lire tout ça
Marsh Posté le 19-02-2007 à 19:59:19
bon.. Comme je suis raleur mais bonne poire, j'ai un peu lu...et rien comprit. Quelques explications serait bienvenue.
Des comentaires et des saur de ligne aussi, d'ailleur...
et la supression de ce qui n'a rien a voir avec la choucroute encore plus.
Enfin... Pour en revenir au explication, c'est qui X? Le pere? W c'est le 1er fils? Mais c'est qui Z
On va avoir du mal a te dire comment faire si on ne sait mème pas ce que tu essaie de faire (ben ouai : c'est ça en fait le plus dur en programmation)
Marsh Posté le 19-02-2007 à 20:17:50
bon... Me revoila, de plus en plus bonne raleur et de plus en plus bonne poire.
Alors pour commencer, tu va me faire le plaisir d'aller acheter un clavier et de t'en servir pour ecrire des mots. Parce que pour communiquer avec d'autre entités vagument humaine,
Frere.Père |
, c'est nettement plus parlant que
Z.pr |
. En plus, avec un clavier, on peu mème ecrire des commentaire entre les lignes.
A par ça, je pense que ce que tu essaie de faire, c'est ça:
while (j<=nb) do |
La seule variable que tu doit garder en memoir est le tout debut de l'arbre. Par la suite, le feuille de l'arbre s'apellent
Ancetre.PremierFils.PetitFrere.PetitFrere.PremierFils.petitFrere |
Tu aura evidement de droit d'utiliser des variable dans tes traitement, mais à priori ces variable auront bien vocation à varier.
Si tu veut quand mème garder un accée direct à chaque feuille de ton arbre, tu peut faire un tableau de pointeurs.
Marsh Posté le 12-02-2007 à 17:24:49
Bonjour ou Bonsoir à tous,
Je suis entrain de monter un programme capable de générer arbre généaologique logique.
Dans ce programme le remplissage des noms se fait génération par génération ( c'est à dire en faisant un parcour en largeur de l'arbre).
Lorsque je met l'instruction read( A) où A est de type string mon programme l'éffactue, mais ignore toutes les autres instructions read de la suite quitte à bug totaltement et à se fermer tout seul.
J4AI VRAIMENT BESOINS DE VOTRE AIDE pour pouvoir continuer monprogramme merci.
---------------
la plus grande bêtise n'est pas d'ignorer mais d'ignorer qu'on ne sait pas