algorythmie mon amour...

dununfolette

Best Member
salut à tous,
j'ai un algo de la mort à faire (enfin pour moi c'est la mort ! :chessy:)
j'ai un tableau dans lequel il y a une phrase quelquonque.
je dois compter le nombre de mots et pour chaque mot le nombre de voyelles et de consonnes.
voici ce que j'ai fait pour l'instant : pour avoir le nombre de mots je sépare chaque mot et je les range dans un tableau à deux dimensions :

Tp : tableau (1 à 1000) de caractères;
Tm : tableau (1 à 30, 1 à 100) de caractères;

i,j,k : entiers; Stop : booléen;

Début
k <- 1; i <- 1; j <- 1; Stop <- Faux
Tant que k <= 1000 et i<= 30 et j<= 100 et Stop = Faux alors
Si Tp (k)<>"?" ou Tp (k)<>"." ou Tp (k)<>"!" alors :excl:"." "?" "!" fin de phrases
Stop <- Vrai;
FinSi
Si Tp (k) = " " alors :excl:" " caractère "espace"
j <- j+1; i <- i+1;
sinon
Si Tp(k)="a" ou Tp(k)="A" ou Tp(k)="z" ou Tp(k)="Z" ou Tp(k)="e" ou Tp(k)="E" ou Tp(k)="r" ou Tp(k)="R" ou Tp(k)="t" ou Tp(k)="T" ou Tp(k)="y" ou Tp(k)="Y" ou Tp(k)="u" ou Tp(k)="U" ou Tp(k)="i" ou Tp(k)="I" ou Tp(k)="o" ou Tp(k)="O" ou Tp(k)="p" ou Tp(k)="P" ou Tp(k)="q" ou Tp(k)="Q" ou Tp(k)="s" ou Tp(k)="S" ou Tp(k)="d" ou Tp(k)="D" ou Tp(k)="f" ou Tp(k)="F" ou Tp(k)="g" ou Tp(k)="G" ou Tp(k)="h" ou Tp(k)="H" ou Tp(k)="j" ou Tp(k)="J" ou Tp(k)="k" ou Tp(k)="K" ou Tp(k)="l" ou Tp(k)="L" ou Tp(k)="m" ou Tp(k)="M" ou Tp(k)="w" ou Tp(k)="W" ou Tp(k)="x" ou Tp(k)="X" ou Tp(k)="c" ou Tp(k)="C" ou Tp(k)="v" ou Tp(k)="V" ou Tp(k)="b" ou Tp(k)="B" ou Tp(k)="n" ou Tp(k)="N" alors :excl:je ne veux que les mots
Tm(i;j) <- Tp(k); i <- i+1;
sinon
Si Tp(k)=":" alors
j <- j-1; :excl:pour éviter d'avoir une ligne vide à cause des deux espaces des ":"
FinSi
i <- i+1
FinSi
FinSi
k <- k+1;
FinTant que
Afficher "Nombre de mots = j";
Fin

Pour le décompte des voyelles et et des consonnes je sais m'en débrouiller je le mettrais à la suite, c'est juste celui là qui m'embète un peu... :wacko:
 

davides3

New Member
salut

jamais d'eau sans algo.. :biggrin: :biggrin:


bon d'accord pas drole

davides3
 

Jibi_2_chambery

New Member
Si Tp (k)<>"?" ou Tp (k)<>"." ou Tp (k)<>"!" alors :excl: :excl: :excl: :excl: FAUX

Si Tp (k)="?" ou Tp (k)="." ou Tp (k)="!" alors Sinon ton algo s arrete des le debut
Stop <- Vrai;
 

dununfolette

Best Member
oui chu en première année Skizo, en réseau

Jibi_2_chambery link=topic=14803.msg130784#msg130784 date=1139182820 a dit:
Si Tp (k)<>"?" ou Tp (k)<>"." ou Tp (k)<>"!" alors :excl: :excl: :excl: :excl: FAUX

Si Tp (k)="?" ou Tp (k)="." ou Tp (k)="!" alors Sinon ton algo s arrete des le debut
Stop <- Vrai;
Jibi, je ne vois pas pourquoi ça stopperait mon algo dès le début ??? puisque c'est uniquement si j'ai un caractère signalant une fin de phrase !
quand j'arrive à la fin de ma phrase j'arrète le Tant que et je passe à l'affichage, vu que je n'ai qu'une seule phrase dans mon tableau...

morice, vince...vous qui êtes callés en algo ! un petit coup de main ??? :cry:
 

Jibi_2_chambery

New Member
Si Tp (k)<>"?" ou Tp (k)<>"." ou Tp (k)<>"!" alors
Stop <- Vrai;

Si je traduit ca en langage du qu'est ce que ca fait pour de vrai dans la realité :happy: ca donne ca :

Tu cherche dans tp(k) un caractere different de ? ou ! ou . Le seul probleme c est que si le caractere que tu trouve en tp(k) est different ton algo s'arrete, or il le sera vu que une phrase commence par une lettre, donc ton booleen passe a vrai et stop le tq

Voili voilou

Et pis oublie pas que pour la fin de l algo tu est obligé de remettre tout ca dans un autre tableau et afficher le tableau pasque le prof veut que ca apparaisse tout d un coup. :biggrin:

Sinon encore une erreur, tu est pas oblige de taper toute les lettres, tu part juste du principe que tout le reste sont des lettres de mot pasque la tu as oublié les "é" "à" "è" etc ...

Encore une ptite erreur

Si Tp (k) = " " alors
j <- j+1; i <- i+1;
i<- 1 et non pas i+1 sinon tu part en diago
 

dununfolette

Best Member
pour mon bolléen je t'assure que c'est bon ! le stop passe à vrai si j'ai un caractère de fin de phrase, donc si j'ai une lettre le booléen reste à faux et donc je continue mon algo !

Jibi_2_chambery link=topic=14803.msg131028#msg131028 date=1139220183 a dit:
Sinon encore une erreur, tu est pas oblige de taper toute les lettres, tu part juste du principe que tout le reste sont des lettres de mot pasque la tu as oublié les "é" "à" "è" etc ...
je vois pas comment je ferais si je les tappe pas toutes (vu que j'ai les symboles %µ£$ etc... qui ne sont pas de lettres qui m'interressent !!! par contre il est vrai que je devrais sans doute rajouter les lettres accentuées... :wacko:
pour i <- 1 tu as raison (t'aurais pu me le dire hier soir ! :wink2:)
 

Jibi_2_chambery

New Member
Bon alors soit j ai pas compris comment marchait le booleen mais l'autre jibi nan plus alors pasque on a tout les deux compris
la chose comme ca :

Tu parcours ton tableau, tu tombe sur le premier caractere, et si il est different de ! ? ou . alors ton booleen passe à vrai et stop le tant que

Bon et sinon pour la suite ^^ c plutot simple mais sinon pour tes lettres :) essaye de dire le contraire, c'est a dire, tout ce qui n est pas ponctuation est lettre, pasque la tu a les ¨, les ^, é, è , ' etc etc et meme les guillemets :chessy:
 

Atzuki®

New Member
dununfolette link=topic=14803.msg130546#msg130546 date=1139164948 a dit:
Tant que k <= 1000 et i<= 30 et j<= 100 et Stop = Faux alors

Explique stp moi pourquoi il y a un "Alors" à la fin de ta ligne :blink: (après un "tant que" c'est bizarre)
 

dununfolette

Best Member
Jibi_2_chambery link=topic=14803.msg131055#msg131055 date=1139221249 a dit:
Tu parcours ton tableau, tu tombe sur le premier caractere, et si il est different de ! ? ou . alors ton booleen passe à vrai et stop le tant que
c'est l'inverse !!! si je tombe sur ! ou . ou ? alors mon booléen passe a vrai et donc ça s'arrète ! donc si j'ai une lettre ça reste à faux !!!

et...les guillemets ne font pas partie des mots :wink2: après reste à voir si on fait grace des accentuations...ce serait top !
Atzuki® link=topic=14803.msg131087#msg131087 date=1139222850 a dit:
Explique stp moi pourquoi il y a un "Alors" à la fin de ta ligne :blink: (après un "tant que" c'est bizarre)
euh...comme ça pour faire joli ! :laugh:
 

morice

Best Member
Pour les caractères "lettres", plutôt que de te faire chier à tous les mettre, tu transformes en ASCII et tu vérifies par un intervalle de valeurs...
comme ça ta condition ne contient plus que deux tests...c'est déjà vachement mieux non? :wink2: :laugh:
 

dununfolette

Best Member
euh...(un peu blonde quand même) wééééééééé !!! :biggrin:
reste pu qu'a trouver comment je dois faire !!!
'réfléchi'...google est mon ami ! :chessy:
marci mon moriçounet !

edit : mééééééé euuuuuuuh... y a po les accents avec l'ascii vu que c'est un codage anglais !!! :wacko:
pis...tu écris ça comment dans ton algo ? (je sais chu nulle, c'est pas pour rien que je fais réseau !)

merci encore !
 

morice

Best Member
je crois que la fonction algorithmique est code('caractère')

sinon pour les caractères accentués bah au pire tu les rajoutes à ta condition...dans tous les cas, ça t'en fait moins à tester...
 

dununfolette

Best Member
dununfolette link=topic=14803.msg130546#msg130546 date=1139164948 a dit:

Tp : tableau (1 à 1000) de caractères;
Tm : tableau (1 à 30, 1 à 100) de caractères;

i,j,k : entiers; Stop : booléen;

Début
k <- 1; i <- 1; j <- 1; Stop <- Faux
Tant que k <= 1000 et i<= 30 et j<= 100 et Stop = Faux
Si Tp (k)<>"?" ou Tp (k)<>"." ou Tp (k)<>"!" alors :excl:"." "?" "!" fin de phrases
Stop <- Vrai;
FinSi
Si Tp (k) = " " alors
j <- j+1; i <- 1;
sinon
Si Tp(k)=code(65 à 90) ou Tp(k)=code(97 à 122)alors
Tm(i;j) <- Tp(k); i <- i+1;
sinon
Si Tp(k)=":" alors
j <- j-1;
FinSi
i <- i+1
FinSi
FinSi
k <- k+1;
FinTant que
Afficher "Nombre de mots = j";
Fin
quelque chose comme ça ???

Edit : Tadaaaaaaaaam ! c'est enlevé Atzuki !
 

Atzuki®

New Member
Merci Dunfolette (au passage je préfère Doudou c'est moins lourd :cool:)

C'est bien il n'y a que sur le forum des iGs que l'ont peut écrire en SMS vu que ya aucun modo :cool:
 

morice

Best Member
mis à part le code(65 à 90) qui n'est pas très beau...ça doit être ça

je metterai plutôt (code(k)=>65 et code(k)<=90)
 

dununfolette

Best Member
Tp : tableau (1 à 1000) de caractères;
Tm : tableau (1 à 30, 1 à 100) de caractères;

i,j,k : entiers; Stop : booléen;

Début
k <- 1; i <- 1; j <- 1; Stop <- Faux
Tant que k <= 1000 et i<= 30 et j<= 100 et Stop = Faux
Si Tp (k)<>"?" ou Tp (k)="." ou Tp (k)="!" alors
Stop <- Vrai;
sinon
Si Tp (k) = " " alors
j <- j+1; i <- 1;
sinon
Si Tp(k)<>"&" ou Tp(k)<>"~" ou Tp(k)<>""" ou Tp(k)<>"#" ou Tp(k)<>"'" ou Tp(k)<>"{" ou Tp(k)<>"(" ou Tp(k)<>"[" ou Tp(k)<>"-" ou Tp(k)<>"|" ou Tp(k)<>"`" ou Tp(k)<>"_" ou Tp(k)<>"\" ou Tp(k)<>"ç" ou Tp(k)<>"^" ou Tp(k)<>"@" ou Tp(k)<>")" ou Tp(k)<>"]" ou Tp(k)<>"=" ou Tp(k)<>"}" ou Tp(k)<>"$" ou Tp(k)<>"" ou Tp(k)<>"^" ou Tp(k)<>"ù" ou Tp(k)<>"*" ou Tp(k)<>"§" ou Tp(k)<>":" ou Tp(k)<>";" ou Tp(k)<>"," ou Tp(k)<>"/" ou Tp(k)<>"%" ou Tp(k)<>"µ" ou Tp(k)<>"£" ou Tp(k)<>"¨" ou Tp(k)<>"+" ou Tp(k)<>"°" ou Tp(k)<>"0" ou Tp(k)<>"9" ou Tp(k)<>"8" ou Tp(k)<>"7" ou Tp(k)<>"6" ou Tp(k)<>"5" ou Tp(k)<>"4" ou Tp(k)<>"3" ou Tp(k)<>"2" ou Tp(k)<>"1" ou Tp(k)<>"²" ou Tp(k)<>"<" ou Tp(k)<>"<" alors
Tm(i;j) <- Tp(k); i <- i+1;
sinon
Si Tp(k)=":" alors
j <- j-1;
FinSi
i <- i+1
FinSi
FinSi
k <- k+1;
FinSi
FinTant que
Afficher "Nombre de mots = j";
Fin


Avec toutes mes excuses à mon petit Jibi (win95 ça me réussit pas ! :cry:)

Atzuki® link=topic=14803.msg131315#msg131315 date=1139233772 a dit:
Merci Dunfolette (au passage je préfère Doudou c'est moins lourd :cool:)
Moi aussi :happy: mais c'est tellement utilisé sur les forums... :chessy:
 

Cybervince

Best Member
dununfolette link=topic=14803.msg130856#msg130856 date=1139213515 a dit:
morice, vince...vous qui êtes callés en algo ! un petit coup de main ??? :cry:
Très sincèrement, l'algo j'était puissant à l'époque du BTS, mais je ne saurai plus en écrire un seul.
A la rigueur je saurai te le coder en PHP, en Perl ou en Shell.
 
Auteur Ca peut vous intéresser Forum Réponses Date
BTS SIO - Spécialité administrateur de réseaux 3

Ca peut vous intéresser