Boucle fantaisiste Turbo Pascal
Résolu
dimi3
Messages postés
269
Date d'inscription
Statut
Membre
Dernière intervention
-
hamdiamor Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
hamdiamor Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon petit programme en Turbo Pascal et les résultats que je ne comprends pas. Il consiste à faire rentrer 8 lettres d'alphabet puis de les afficher :
program mots ;
var
tirage : array[1..8] of char ;
ensemble : string ;
i : integer ;
begin
i := 1 ;
while i < 9 do
begin
writeln('Lettre ',i,' : ');
read(tirage[i]);
ensemble := ensemble + tirage[i];
i := i + 1 ;
end;
writeln('Les lettres sont : ',ensemble);
end.
-------------- résultat :
Je ne peux entrer que trois lettres puis le programme s'interrompt et affiche :
Lettre 1 :
a
Lettre 2 :
Lettre 3 :
Lettre 4 :
b
Lettre 5 :
Lettre 6
Lettre 7 :
c
Lettre 8 :
Les lettres sont : a
b
c
-------------------------
Comment s'explique le fait que la boucle n'est proposée que 3 fois plutôt que 8 ?
Comment s'explique le fait que la boucle ne s'exécute qu'une fois sur 3 ?
Je vous remercie de m'éclairer et bon dimanche.
Voici mon petit programme en Turbo Pascal et les résultats que je ne comprends pas. Il consiste à faire rentrer 8 lettres d'alphabet puis de les afficher :
program mots ;
var
tirage : array[1..8] of char ;
ensemble : string ;
i : integer ;
begin
i := 1 ;
while i < 9 do
begin
writeln('Lettre ',i,' : ');
read(tirage[i]);
ensemble := ensemble + tirage[i];
i := i + 1 ;
end;
writeln('Les lettres sont : ',ensemble);
end.
-------------- résultat :
Je ne peux entrer que trois lettres puis le programme s'interrompt et affiche :
Lettre 1 :
a
Lettre 2 :
Lettre 3 :
Lettre 4 :
b
Lettre 5 :
Lettre 6
Lettre 7 :
c
Lettre 8 :
Les lettres sont : a
b
c
-------------------------
Comment s'explique le fait que la boucle n'est proposée que 3 fois plutôt que 8 ?
Comment s'explique le fait que la boucle ne s'exécute qu'une fois sur 3 ?
Je vous remercie de m'éclairer et bon dimanche.
A voir également:
- Boucle fantaisiste Turbo Pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Turbo sim inconvénient - Forum iPhone
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
12 réponses
ok j'ai résolu le pb :
1) ajouté "uses wincrt" après "program..."
2) change le type de la variable tirage en string (array[....] of char = string ^^)
3) changé la boucle en boucle for (c'est juste plus propre)
4) C'estc e qui a résolu le pb, étrangement :
write('Lettre ',i,' : ');
readln(tirage[i]);
au lieu de writeln()...read()...
Je sais c'est bizarre...
1) ajouté "uses wincrt" après "program..."
2) change le type de la variable tirage en string (array[....] of char = string ^^)
3) changé la boucle en boucle for (c'est juste plus propre)
4) C'estc e qui a résolu le pb, étrangement :
write('Lettre ',i,' : ');
readln(tirage[i]);
au lieu de writeln()...read()...
Je sais c'est bizarre...
Merci de votre rapide réponse.
Cette ligne me donne l'erreur suivante :
Error 15 : File not found (wincrt.tpu).
Cette ligne me donne l'erreur suivante :
Error 15 : File not found (wincrt.tpu).
Bonjour,
A vue de nez, cela ressemble a un probleme classique d'entree-sortie.
Je ne me souviens plus tres bien comment fonctionne Pascal mais je te suggere de remplacer read par readln.
Il s'agit de "manger" les caracteres sauts de ligne \n.
Sandrine
PS: et sous windows, ije crois qu'il y en a 2 (nouvelle ligne et fin de ligne)...
A vue de nez, cela ressemble a un probleme classique d'entree-sortie.
Je ne me souviens plus tres bien comment fonctionne Pascal mais je te suggere de remplacer read par readln.
Il s'agit de "manger" les caracteres sauts de ligne \n.
Sandrine
PS: et sous windows, ije crois qu'il y en a 2 (nouvelle ligne et fin de ligne)...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'ailleurs, ta variable tirage, a moins d'etre réutilisée, ne sert à rien.
une simple variable char réutilisée à chaque itération aurait marché
une simple variable char réutilisée à chaque itération aurait marché
Merci,
Le script corrigé fonctionne en effet. Mais j'aimerais placer mes lettres dans un tableau. Dois-je me résigner à abandonner cette folie ?
Le script corrigé fonctionne en effet. Mais j'aimerais placer mes lettres dans un tableau. Dois-je me résigner à abandonner cette folie ?
Une chaine de caractère c'est un tableau. Ca comment à 1, mais en fait, dans chaine[0] il y a le nombre de caractères de la chaine...
Ca marche exactement pareil, tu peux remettre "array [1..8] of char;" si tu préfère.
Ca marche exactement pareil, tu peux remettre "array [1..8] of char;" si tu préfère.
Je viens d'essayer d'afficher chacun des éléments de la chaîne et je m'aperçois en effet que la chaîne se comporte comme un tableau. Merci pour votre temps et votre patience.
Sur un autre post intitulé "clavier et éditeur Turbo Pascal 7" je posais la question de savoir comment faire entendre à l'éditeur de TP que j'utilise un clavier français. J'ai traficoté l'autoexec.bat mais rien n'y fait. Est-ce un nouveau rêve qui s'écroule ? :-)
Sur un autre post intitulé "clavier et éditeur Turbo Pascal 7" je posais la question de savoir comment faire entendre à l'éditeur de TP que j'utilise un clavier français. J'ai traficoté l'autoexec.bat mais rien n'y fait. Est-ce un nouveau rêve qui s'écroule ? :-)
comment ça ?
C'est quoi comme éditeur ?
Personnellement j'utilise une vielle version de Turbo pascal for windows trouvée en TP d'info ^^
C'est quoi comme éditeur ?
Personnellement j'utilise une vielle version de Turbo pascal for windows trouvée en TP d'info ^^
Je ne l'ai trouvé nulle part sur le net.
Enfin, un ami me l'as mis sur son FTP, on l'a pompé sur les PC de l'école.
http://biomanred.free.fr/Turbo%20Pascal%20For%20Windows.zip
Attention c't'un vieux programme, mais il marche bien
(ne pas oublier "uses wincrt;" en deuxieme ligne du programme)
Attention² Ctrl-C & co ne marchent pas, les raccourcis sont différents
Enfin, un ami me l'as mis sur son FTP, on l'a pompé sur les PC de l'école.
http://biomanred.free.fr/Turbo%20Pascal%20For%20Windows.zip
Attention c't'un vieux programme, mais il marche bien
(ne pas oublier "uses wincrt;" en deuxieme ligne du programme)
Attention² Ctrl-C & co ne marchent pas, les raccourcis sont différents
salut, tu modifies juste read par readln, !! c'est une histoire!!
program mots ;
uses wincrt;
var
tirage : array[1..8] of char ;
ensemble : string ;
i : integer ;
begin
i := 1 ;
while i < 9 do
begin
writeln('Lettre ',i,' : ');
readLN(tirage[i]); {AU LIEU DE READ !!!!!!!!!!!!}
ensemble := ensemble + tirage[i];
i := i + 1 ;
end;
writeln('Les lettres sont : ',ensemble);
end.
program mots ;
uses wincrt;
var
tirage : array[1..8] of char ;
ensemble : string ;
i : integer ;
begin
i := 1 ;
while i < 9 do
begin
writeln('Lettre ',i,' : ');
readLN(tirage[i]); {AU LIEU DE READ !!!!!!!!!!!!}
ensemble := ensemble + tirage[i];
i := i + 1 ;
end;
writeln('Les lettres sont : ',ensemble);
end.