Pour les experts en PASCAL seulement!!!!!!!!

Fermé
watson - 16 janv. 2008 à 14:11
 titou - 27 juin 2008 à 11:35
Bonjour;

si vous ête expert voici mon problème:

mon problème est de lire une variable char!!! le compilateur pascal ne prends pas en considération l'instruction read pour lire ce variable!!!

en breif, j'ai déclaré une variable char comme suit:

program test;
var C: char;
a,b:integer;

{et puis je dois lire ce variable donc : }
begin
write('donnez la valeur de a:'); read(a);

write('donnez la valeur de b:'); read(b);

write('entrez votre choix: + pour la somme et * pour le produit'); read(C);

{et apres selon la valeur de la variable "c" je vais exicuter l'une des instriction la 'case"; }

case c of

'+': writeln(a+b');
'b': writeln('a*b');
else write ('votre choix est incorrecte');
end;

end;

mais le problème c'est que il me laisse pas saiser la valeur de c même quand j'ai fait un readkey pour arrêter le compilateur et saisir la valeur de c il la prends pas en considération.


merci de m'aider pour dépasser ce problème qui m'embête!!
alors je compte sur vous mes amis comme d'habitude.

watson;

6 réponses

Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
16 janv. 2008 à 14:16
Bonjour,
Je n'ai pas les connaissances en Pascal, c'est juste pour te signaler que choix est masculin et donc "votre choix est incorrect"
et il faut mettre un espace avant les deux-points aussi "donnez la valeur de a : ". =oÞ
bon courage dans ta recherche.

--
Tøƒ
0
Bonjour à tous;

1) je suis pas expert et j'aimerai bien voir la solution;

2) y a des gens qui cherche les erreurs d'orthographe et qui parlent sans respect donc......... :-) je lui dis ta place n'est pas ici va chercher ..................................?

3) bon, pour ton problème je pense que tu dois utiliser une boucle repeat et à l'interieur la lecture de ton variable choix !

HI;
0
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
16 janv. 2008 à 14:49
Je ne vois pas où est le manque de respect ?
S'il veut faire une interface, je pense qu'il est préférable qu'il n'y ai pas de faute d'orthographe.
C'était juste un conseil comme un autre pour améliorer son programme.

"je lui dis ta place n'est pas ici va chercher ..................................? "
Tu peux finir ta phrase ?

--
Tøƒ
0
Bonjour;

j'ai le même problème! aider nous SVP vous les experts.

Slt.
0
est-ce que ça fait l'affaire ?

program test;
var c : char;
a,b : integer;
begin
write('donnez a:');readln(a);
write('donnez b:');readln(b);
writeln('entrez + ou *');

{ lecture directe du caractere au clavier, sans faire ENTER }
read(kbd,c);

write('solution... ');
case c of
'+': writeln(a,c,b,'=',a+b);
'*': writeln(a,c,b,'=',a*b);
else writeln('incorrect');
end;
end.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour à tous,
Pour résoudre ce problème il faut tout d'abord connaître la différence en pascal entre read et readln.
Pascal utilise une mémoire tempon (qui est en réalité une sorte de fichier) pour stocker les valeurs saisies au clavier, lorsque on utiise read, à la prochaine instruction de lecture il va lire à partir du même tempon qui contient déjà des valeurs. par contre, on va trouver un tempon vide si on utilise readln.
je vous conseil alors de n'utiliser jamais read, utilisez toujours readln lorsqu'il s'agit de saisir au clavier.
Pour mieux comprendre la différence exécuter le traitement suivant:

read(c1)
read(c2)
writeln('c1=',c1);
writeln('c2=',c2);

et lorsqu'il s'agit de donner c1, saisissez deux caractère en même temps (exemple ab ) puis entrer,
vous allez remarquer que c1 prend 'a' et c2 prend 'b'.
0
utilisez l'instruction '' readln(c);''
j'espere que ça reglera votre probleme.
0