Bonjour,
je dois faire un code (Pascal ABC) qui me permettrait de rechercher (qui seront affichés à l'écran) dans une liste tous les mots comprenant deux lettres que j'aurais fournies. Je n'arrive vraiment pas à le faire. pourriez vous svp m'aider ?
Discussion :
Bonjour,
je dois faire un code (Pascal ABC) qui me permettrait de rechercher (qui seront affichés à l'écran) dans une liste tous les mots comprenant deux lettres que j'aurais fournies. Je n'arrive vraiment pas à le faire. pourriez vous svp m'aider ?
Salut
Que n'arrives-tu pas à faire... Il existe des fonctions toutes faites pour savoir si un caractère existe.
Il faut que tu nous montres un minimum de travail pour que l'on puisse t'aider. Nous ne somme pas ici pour faire le travail à ta place.
Bonjour et bienvenue,
Un indice : l'utilisation de la fonction Pos dans une boucle foreach..in.
![]()
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
bonjour, merci de votre réponse
je sais qu'il ya une erreur mais je ne trouve, je n'ai jamais étudier pascal, seulement java dans je suis totalement perdu. Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 var s:string; a:array[1..100] of string; i,count:integer;letter:char; begin readln(s); writeln('lettre'); letter:=readkey; count:=1; i:=1; while (i<=length(s)) do begin if s[i]=' ' then begin if pos(letter,a[count])>=1 then writeln(a[count]); inc(count);inc(i); end; a[count]:=a[count]+s[i]; inc(i); end; if pos(letter,a[count])>=1 then writeln(a[count]); end.









Voici quelques éléments pour t'aider à construire l'algorithme, sans utiliser Pos.
Tu parcours ton tableau de chaînes dans une boucle. À chaque itération, tu initialises à zéro ton compteur Count et tu compares chaque caractère de la chaîne avec la lettre à repérer : si elle est trouvée, tu incrémentes le compteur. Lorsque la chaîne est entièrement parcourue, tu testes la valeur de ton compteur : s'il est à 2 tu affiches la chaîne.
Au fait, comment remplis-tu ton tableau de chaînes ?
Règles du forum
Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
Mes tutoriels et sources Pascal
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]
Bonjour Diana M
En complément de ce qui a été écrit ci-dessus, pense à écrire ton code de manière lisible (indentation), ce qui te permettra de mieux comprendre son fonctionnement.
Essaie aussi de choisir des noms de variables très clairs.
Ton code sans modification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 var S: string; a: array [1 .. 100] of string; i, Count: Integer; letter: char; begin readln(S); writeln('lettre'); letter := readkey; Count := 1; i := 1; while (i <= length(S)) do begin if S[i] = ' ' then begin if pos(letter, a[Count]) >= 1 then writeln(a[Count]); inc(Count); inc(i); end; a[Count] := a[Count] + S[i]; inc(i); end; if pos(letter, a[Count]) >= 1 then writeln(a[Count]); end;
Partager