séquence des voyelles

Page 1 sur 2 1, 2  Suivante

Voir le sujet précédent Voir le sujet suivant Aller en bas

séquence des voyelles

Message par mosa le Sam 1 Déc - 20:05

développer un programme qui permet de saisir une séquence de lettres (pas nécessairement toutes en miniscule ou en majuscule) et d'afficher la longueur de la sous-séquence des voyelles la plus longue.

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 635
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par informix le Sam 1 Déc - 20:32

oh! c'est assez dur. Un bon exercice pour s'entrainer et s'échauffer. Toutefois, pourquoi vous avez choisi de le mettre dans la rubrique INFO-Supérieur ? Pourquoi pas dans INFO-Lycée? confused
informix, Ecole d'ingénieurs
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.

informix
Membre fondamental
Membre fondamental

Messages : 350
Inscrit le : 19 Mar 2007

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par manianis le Dim 2 Déc - 20:54

Je dirai que l'énoncé n'est pas assez clair.

Comment connaitre le début ou la fin d'une sous séquence ?

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par nabiL le Dim 2 Déc - 21:04

Je crois que c'est clair manianis:
Une chaine qui ne concerne dans cet exercice, est toute chaine qui contient uniquement des voyelles.
On avance, caractère par caractère, là où on trouve une voyelle on annonce le début d'une éventuelle solution. Là où on détecte une "non-voyelle", on annonce la fin de la solution candidate.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par mosa le Dim 2 Déc - 21:15

je veux dire que j'ai pas la solution de ce problème et je l'ai proposé pour que l'on résout ensemble,

si par exemple la séquence est la suivante

bfgdKjGaeiouykjlmoisPMCX

donc aeiouy est la sous séquence des voyelles la plus longue

pour connaître son début, on teste si le caractère est a ou e ou i ou o ou u ou y.

c'est ça ou non

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 635
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par nabiL le Dim 2 Déc - 21:23

oui: c'est correct l'exemple que tu as posté.
Je vais essayer de trouver une solution et l'implémenter en PASCAL. RDV après quelques minutes (inchallah)
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par nabiL le Dim 2 Déc - 21:52

Code:
program plusLgSequenceV;
uses wincrt;

(* fontion: vérifie si une lettre est voyelle ou non *)
function isVowel(c: char):boolean;
begin
  isVowel := (Upcase(c)='A') or (Upcase(c)='E') or (Upcase(c)='I') or
              (Upcase(c)='O') or (Upcase(c)='U') or (Upcase(c)='Y');
end;

(* fonction: retourne la plus longue séquence de voyelles *)
function getLonguestSeqV(ch:string):string;
var
  curSeq : string;  (* la séquence en cours de construction *)
  lgSeq  : string;  (* la plus longue séquence trouvée *)
  i      :integer;
begin
  lgSeq  := '' ;
  curSeq := '' ;
  for i:=1 to length(ch) do
  begin
    if (isVowel(ch[i])) then
        curSeq := curSeq + ch[i]
    else
    begin
      if (length(curSeq)>length(lgSeq)) then
          lgSeq := curSeq;
      curSeq := ''; 
    end;
  end;
  if (length(curSeq)>length(lgSeq)) then
    lgSeq := curSeq;
  getLonguestSeqV := lgSeq;
end;


(* PROGRAMME PRINCIPAL *)
VAR
  chaine: string;

BEGIN
  write('Donner une séquence de lettres: ');
  readln(chaine);
  Write('Plus longue séq de VoyL: ',getLonguestSeqV(chaine));
END.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par methodiX le Lun 3 Déc - 21:53

Excellente solution. Peut-on faire mieux??? point de vue Complexité Algorithmique!
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)

methodiX
Admin
Admin

Sexe:Masculin
Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par manianis le Lun 3 Déc - 22:16

Bon programme Nabil.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par mosa le Mar 4 Déc - 7:15

Code:

 if (length(curSeq)>length(lgSeq)) then
          lgSeq := curSeq;
      curSeq := ''; 
    end;
  end;
  if (length(curSeq)>length(lgSeq)) then
    lgSeq := curSeq;
  getLonguestSeqV := lgSeq;
end;


pourquoi la même if...then se répète deux fois?

mosa
Modérateur
Modérateur

Sexe:MasculinScorpionBuffle
Messages : 635
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par manianis le Mar 4 Déc - 8:35

La boucle for ... to pourra se terminer alors que le test s'il s'agit de la plus longue séquence n'a pas été exécuté.

Exemple :
iuytrrrrroiuyoiuyoiuy
si vous ne faites pas ce test le programme considérera iuy comme étant la séquence la plus longue.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par nabiL le Mar 4 Déc - 9:44

manianis a écrit:La boucle for ... to pourra se terminer alors que le test s'il s'agit de la plus longue séquence n'a pas été exécuté.

Exemple :
iuytrrrrroiuyoiuyoiuy
si vous ne faites pas ce test le programme considérera iuy comme étant la séquence la plus longue.


mosa:C'est exactement ça.
Essaie de l'enlever, la deuxième IF, et tu verras que si la plus longue séquence est située à la fin, elle va être ignorée.
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par informix le Sam 8 Déc - 11:52

on n'a souvent parlé de complexité dans notre forum Smile
alors, quelle est la complexité du programme proposé par NabiL ?
informix, Ecole d'ingénieurs
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.

informix
Membre fondamental
Membre fondamental

Messages : 350
Inscrit le : 19 Mar 2007

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par manianis le Sam 8 Déc - 15:40

La complexité de votre algoithme est O(n). elle dépend uniquement du nombre de caractères dans la chaine de caractères.

manianis
Admin
Admin

Sexe:Masculin
Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Re: séquence des voyelles

Message par nabiL le Sam 8 Déc - 18:31

C'est à peu près comme la recherche du plus grand élément dans un tableau: il faut parcourir tout le tableau. C'est en O(n) la complexité.

NB: O(n) ne veut pas dire "n"
Nabil - tunis
خير الناس أنفعهم للناس

nabiL
Admin
Admin

Sexe:Masculin
Messages : 1906
Inscrit le : 19 Mar 2007
Localisation : Tunisie

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivante

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum