Problème avec la saisie d'un string ... lol

Fermé
willgates - 8 oct. 2008 à 19:46
Willgates Messages postés 2 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 8 octobre 2008 - 8 oct. 2008 à 21:53
Bonjour,
J'ai fait le programme qui suit en TP ...
Pb : la saisie de la chaine de caractère "copie" ne marche que lorsque je met en commentaire la procedure "controle" dans le corps du programme ...

Voici la bête :

Program competences;

Uses crt;

Const
nmaxq = 30;

Type
tableau = array[1..nmaxq] of integer;

Var
nombre_q,nombre_s,nombre_a,nombre_r,nombre_c,i : integer;
total_s,total_a,total_r,total_c,nr,ps,pa,pr,pc,pnr : real;
autre : char;
sbool,abool,rbool : boolean;
savoir, appliquer, raisonner, communiquer : tableau;
copie : string;

Procedure affectation(var tab : tableau;var nombre : integer);
Var
n : byte;
Begin
n:=1;
i:=1;
while n<>0 do
begin
read(tab[i]);
n:=tab[i];
inc(i);
end;
nombre:=i-2;
End;

Procedure calcule(tab : tableau; rep : string; nom : integer; var panier : real);
Var
n : byte;
Begin
i:=1;
panier:=0;
for i:=1 to nom do
begin
n:=tab[i];
case rep[n+4] of
'1' : panier:=panier+1;
'5' : panier:=panier+0.5;
'9' : panier:=panier+0;
'0' : nr:=nr+1;
end;
inc(i);
end;
End;

Procedure controle;
Begin
writeln ('Num‚ros des questions portant sur la comp‚tence : ');
write('- Savoir = ');
affectation(savoir,nombre_s);
if nombre_s=0 then sbool:=false;
write('- Appliquer = ');
affectation(appliquer,nombre_a);
if nombre_a=0 then abool:=false;
write('- Raisonner = ');
affectation(raisonner,nombre_r);
if nombre_r=0 then rbool:=false;
write('- Communiquer = ');
affectation(communiquer,nombre_c);
nombre_c:=nombre_c+4;

nombre_q:=(nombre_s+nombre_a+nombre_r+nombre_c);
writeln;
End;

BEGIN
clrscr;
textbackground(1);
textcolor(7);

sbool:=true;abool:=true;rbool:=true;

controle;

repeat
begin
write('R‚ponses aux questions : ');
readln(copie);
writeln('Vous avez saisi : ',copie);

nr:=0;
calcule(savoir,copie,nombre_s,total_s);
calcule(appliquer,copie,nombre_a,total_a);
calcule(raisonner,copie,nombre_r,total_r);
calcule(communiquer,copie,nombre_c,total_c);
if sbool then ps:=(total_s/nombre_s)*100 else ps:=999;
if abool then pa:=(total_a/nombre_a)*100 else ps:=999;
if rbool then pr:=(total_r/nombre_r)*100 else pr:=999;
pc:=(total_c/nombre_c)*100;
pnr:=(nr/nombre_q)*100;

writeln('R‚sultats :');
writeln('Savoir = ',ps:2:0,' %');
writeln('Appliquer = ',pa:2:0,' %');
writeln('Raisonner = ',pr:2:0,' %');
writeln('Communiquer = ',pc:2:0,' %');
writeln('Non r‚pondu = ',pnr:2:0,' %');
writeln;

write ('Saisir une autre copie (o/n) ? ');
autre:=readkey;
end;
until autre='n';
END.

Merci d'avance ...

Willgates
A voir également:

2 réponses

Willgates Messages postés 2 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 8 octobre 2008
8 oct. 2008 à 19:53
Petite précision, c'est avec TP 7 ...

Je sais c'est ringard mais c'est une vieille pulsion de mes années d'étudiant ...
-1
Willgates Messages postés 2 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 8 octobre 2008
8 oct. 2008 à 21:53
Au secours aidez moi ... c'est très très urgent !!!
-1