Fonction qui calcule le nombre de mots dont le nombre de lettres est strictement
john726
Messages postés5Date d'inscriptiondimanche 23 novembre 2008StatutMembreDernière intervention25 février 2009
-
24 févr. 2009 à 16:54
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 2010
-
25 févr. 2009 à 14:10
<dir>
Bonjour a tous,
Tous ceux qui pourront m'aider seront les bienvenue...
J'aimerai coder une fonction qui calcule le nombre de mots (integer) dont le nombre de lettres (char) est strictement superieur a 3 dans une phrase (string) mais je n'y parviens pas...
Par exemple, cette fonction appelée avec la phrase suivante : 'J'ai posté un message sur un forum aujourdui'
renvoit 4 car les seuls mots dont le nombre de lettres excedent 3 sont : 'posté' 'message', 'forum' et 'aujourdui'.
Merci d'avance a tous ceux qui pourront m'aider !
</dir>
A voir également:
Ecrire un algorithme qui permet de calculer le nombre d'occurrences d'un mot dans une phrase
Calcul nombre de mots - Meilleures réponses
Algorithme nombre de mot dans une phrase - Meilleures réponses
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 24 févr. 2009 à 19:13
Salut,
Ouh lalala! C'est un truc à tourner bourrique, ça!
A cause des apostrophes...
'J'ai posté un message sur un forum aujourd'hui'
Si une apostrophe = un espace, alors il y aura « aujourd » et pas « hui » dans ta liste.
Si une apostrophe <> un espace, alors il y aura « j'ai » et « aujourd'hui » dans ta liste.
john726
Messages postés5Date d'inscriptiondimanche 23 novembre 2008StatutMembreDernière intervention25 février 2009 25 févr. 2009 à 12:38
resalut a tous!
Finalement g trouve la solution mais cela n'a pas été sans difficulte....le probleme est qu'elle ne gere pas les mots composés comme 'Jean Paul',etc...c assez problematique mais bon si vous avez des idées a me proposer pour resoudre ce probleme merci d'avance...En attendant, pour tous ceux qui en auraient un jour besoin je vous poste la fonction en question :
function nb_mots_sup3(str: string): integer;
var
i, j, l, nbOcc, nbWord : integer;
begin
i := 1;
nbWord := 0;
l := length(str);
while i <= l do
begin
while (i <l) and (str[i] ' ') do
i := i + 1;
nbOcc := 0;
while (i <= l) and (str[i] <> ' ') do
begin
nbOcc := nbOcc + 1;
i := i + 1;
end;
if nbOcc > 3 then
nbWord := nbWord + 1;
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 25 févr. 2009 à 14:10
Je te propose un poil plus simple :
function Combien(const Str: string): Integer;
var TsTemp: TStringList;
X: Integer;
begin
Result:= 0;
TsTemp:= TStringList.Create;
try
TsTemp.DelimitedText:= Str;
for X:= TsTemp.Count-1 downto 0 do
if Length(TsTemp[X])<4 then
TsTemp.Delete(X);
Result:= TsTemp.Count;
finally
TsTemp.Free;
end;
end;
Pose un bouton et sa procedure est:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Combien('J''ai posté un message sur un forum aujourdui')));
// ou Showmessage(IntToStr(Edit1.Text)); avec un TEdit par exemple
end;