Problème avec la saisie d'un string ... lol
willgates
-
Willgates Messages postés 2 Statut Membre -
Willgates Messages postés 2 Statut Membre -
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
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:
- Problème avec la saisie d'un string ... lol
- Saisie gestuelle iphone - Guide
- Liste deroulante excel avec saisie semi-automatique - Guide
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
- Saisie vocale sms - Guide
- Gboard saisie vocale - Accueil - Applications & Logiciels