Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1098 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Aide sur un ALGO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide sur un ALGO

n°1531310
clintou
Posté le 20-03-2007 à 21:51:10  profilanswer
 

Bien le bonsoir à tous,
 
 
Voila cela fait deux mois que j'ai commencé l'Algo  jusqu'a aujourd'hui pas de probeme.En effet il y a deux jours je butais sur un algo bien precis.Je m'explique.J'ai  etudié les instructions simples,les instructions de controle,les tableaux,,procedure et fonction et je pense avoir compris mais en tombant sur cette alo je me mis a douté.Voici ce fameux algo.
 
 
 
Fonction DonneOccurence (LaChaine:Tableau(80) de CARACTERE,CarRech:Caractère,Position:IN OUT NOMBRE):NOMBRE
VAR
 
Indice:Nombre  
CptOCC     /compteur Occurence/
Premier:Boolean       /Flag au drapeau pour indiquer si premiere occurrence/
i:NOMBRE     /Variable de la boucle/
 
DEBUT
 
Position = -1    /Valeur d'erreur au cas ou pas occcurence trouvée/
Premier = Vrai   /Initialisation du Flag/
CptOcc = 0
Pour i = 1 à longueur (LaChaine) Faire
Si LaChaine [i] = CarRech Faire
Si Premier Alors
Premier=Faux
Posistion = i
Fin si
CptOCC = CptOCC +1
Fin si
Fin Pour
Retourne CptOCC  
Fin Fonction
 
Programme OccurenceEtPostion
 
Var
 
LaChaine:Tableau (80) de CARACTERE
Carlu:CARACTERE
LaPostion:NOMBRE
NombreOccu:NOMBRE
 
Debut
 
/Saisir les infos souhaitées/
 
Afficher "Entrez une chaine de caractères"
Saisir: LaChaine
Afficher "Entrez un caractère"
Saisir:Carlu
 
NombreOCC=DonneOccurence (LaChaine,Carlu,LaPostion)
 
Si  LaPosition = -1 Alors
 
  Afficher "Pas d'occurence du caractère dans la chaine"
   Sinon
           Afficher "Le nombre d'occurences est de ", NombreOCC
           Afficher "La position de la première occurrence est:",LaPosition
    Fin Si
 
Fin
 
 
Merci à tous ceux qui aurront la patience  de me repondre


Message édité par clintou le 20-03-2007 à 22:38:43
mood
Publicité
Posté le 20-03-2007 à 21:51:10  profilanswer
 

n°1531314
franceso
Posté le 20-03-2007 à 21:55:27  profilanswer
 

C'est quoi la question ?


---------------
TriScale innov
n°1531317
clintou
Posté le 20-03-2007 à 22:07:17  profilanswer
 

En fait je ne comprend pas les instructions de la Fonction

n°1531325
clintou
Posté le 20-03-2007 à 22:39:11  profilanswer
 

la question est peut-etre mal posée?

n°1531429
franceso
Posté le 21-03-2007 à 09:45:04  profilanswer
 

Commence par nous dire ce que tu comprends (par exemple, est-ce que tu comprends le but global de la fonction ?) et indiquer précisément ce que tu as du mal à saisir (une instruction particulière, le fonctionnement global de l'algo, ...)


---------------
TriScale innov
n°1531851
clintou
Posté le 21-03-2007 à 20:33:38  profilanswer
 

quel est la valeur de fin de la variable de la boucle?Est-ce 80 cases du tableau ou la chaine de caractere que j'ai saisi dans le programme principal?
 
De même je n'ai pas compris cette partie de l' algo  
 
que faire apres le premier FAIRE?
A quoi correspond le égal de LaChaine [i] = CarRech  
Quel est la valeur de [i]?
 
 
Pour i = 1 à longueur (LaChaine) Faire
Si LaChaine [i] = CarRech Faire
Si Premier Alors
Premier=Faux
Posistion = i

n°1532407
clintou
Posté le 22-03-2007 à 21:23:14  profilanswer
 

donc voila comment je comprend la chose.
 
 
je commence par le programme principal apres le mot Debut
 
1- on me demande d'entrer une chaine de carartere donc si je tape "ceci est une chaine" cela fait 16 caractères.
 
2- Ensuite om me demande de saisir un caractère , je tape donc " C"
 
 
3- J' appel la fonction DonneOccurence
 
et je constate qu'il y a 3 paramètres formels qui correspondent aux variables effectifs du programme principale (LaChaine:Tableau(80) de CARACTERE,CarRech:Caractère,Position:IN OUT NOMBRE) la presence d'un IN OUT me permet de dire que c'est un paramètre sortant ce qui permet de renvoyer deux valeurs: CptOCC + Position tout deux de types nombres
 
 
Ces trois variables sont initialisés
 
Position = -1
Premier = Vrai
CptOcc = 0
 
Ensuite c'est la que je bloque

n°1532575
franceso
Posté le 23-03-2007 à 10:44:44  profilanswer
 

clintou a écrit :

donc voila comment je comprend la chose.
[...]
je constate qu'il y a 3 paramètres formels qui correspondent aux variables effectifs du programme principale (LaChaine:Tableau(80) de CARACTERE,CarRech:Caractère,Position:IN OUT NOMBRE) la presence d'un IN OUT me permet de dire que c'est un paramètre sortant ce qui permet de renvoyer deux valeurs: CptOCC + Position tout deux de types nombres


 
C'est un bon début. Maintenant, il te reste à comprendre à quoi sert la fonction (en gros, que représentent CptOcc et Position ?)
 

clintou a écrit :

A quoi correspond le égal de LaChaine [i] = CarRech
   Il s'agit ici d'un test d'égalité, et non d'une affectation. J'aurais plutôt écrit Lachaine[i]==CarRech pour éviter les confusions
 
Quel est la valeur de [i]?
  i est l'indice de boucle, qui est incrémenté à chaque itération
 
Pour i = 1 à longueur (LaChaine) Faire
  i varie ici entre 1 et la longueur de laChaine


---------------
TriScale innov
n°1532644
breizhbugs
Posté le 23-03-2007 à 11:32:04  profilanswer
 

clintou a écrit :


A quoi correspond le égal de LaChaine [i] = CarRech  


Normalement (enfin du temps ou on voyait ca en cours) en algorithmie, le '=' dénote une comparaison(égalité) et le ':=' une affectation.
Ton algorithme utilise '=' dans les deux cas ce qui portent à confusion.


Message édité par breizhbugs le 23-03-2007 à 11:33:37
n°1532703
MagicBuzz
Posté le 23-03-2007 à 12:08:29  profilanswer
 

d'un autre côté, y'a qu'en C qu'on fait des affectation dans la condition d'un test, ou qu'on teste une égalité au milieu d'une instruction...
 
si <test> alors
<affectations>
sinon
<affectations>
fin si
 
ça s'écrit toujours comme ça un algo, y'a pas de confusion possible.
 
et même si en C ça va par exemple se traduire par :
 
a = (b == c)*d;
 
on s'en bat les coucougnettes, en algo ça ne sera pas raccourci de la sorte.

mood
Publicité
Posté le 23-03-2007 à 12:08:29  profilanswer
 

n°1533029
clintou
Posté le 23-03-2007 à 21:47:25  profilanswer
 

merci ppour les reponses qui m'éclairent de plus en plus.Donc si je tape "ceci est une chaine"   la longueur de la chaine de caractères fait 19 puisqu'il faut compter les espaces.
 
 
ce qui donne  
Pour i = 1 à 19  faire
Si ceci est une chaine [i] = c  Faire  
Si Premier Alors
 
 
En faite c'est apres le FAIRE que je ne sais pas quoi faire.
 
Desolé si j'insite mais je veux absolument comprendre, merci encore à tous ceux qui urront la patience et la gentillesse de ma repondre
 
 

n°1533053
clintou
Posté le 23-03-2007 à 22:45:11  profilanswer
 

et quelle est la valeur de [i] au debut de la boucle.
 
Merci d'avance

n°1533510
MagicBuzz
Posté le 26-03-2007 à 09:54:40  profilanswer
 

après, ça dépend du langage utilisé. en C, la chaîne fait taille de la chaîne + 1, un caractères "\0" étant ajouté à la fin pour indiquer la fin de la chaîne.
 
à nouveau, selon le langage, [1] = première caractère de la chaine ou second. tout dépend de la façon de stocker les chaînes (de 0 à taille - 1 ou de 1 à taille
 
il faut noter simplement que dans certain langages, une chaîne de caractères est un simple tableau de caractères. c'est le cas du C ou du C++.
 
par contre, tout ce que je peux dire à propos de cette algo, c'est qu'il est tout sauf un algo : ça ne sera transcriptible qu'en ASM, C, C++ ou dérivés.
 
en ADA, Pascal ?, VB, Java, C#, etc. une chaîne N'EST PAS un tableau de caractères. du moins, elle n'est pas exploitable sous cette forme directement.
 
On utilisera alors des fonction d'extraction. C'est ces fonction d'extraction qui doivent apparaître dans ton algo, pas des accès directs en mémoire comme c'est le cas avec la syntaxe actuelle. les accès directs apparaîssent uniquement lors de la phase de l'optimisation, lorsqu'on exploite les raccourcis du langage choisi, pas au moment de l'élaboration de l'algo, où on ne sais même pas encore si c'est un PC qui va s'occuper de faire le traîtement ou non.
 
En gros :
 
de Pour i = 1 à longueur_de_la_chaine(chaine)
  si caractère_à_l'indice(i) ...
  fin si
fin pour


Message édité par MagicBuzz le 26-03-2007 à 09:56:52
n°1533909
clintou
Posté le 26-03-2007 à 20:58:32  profilanswer
 

non c'est juste un algo sans contrainte de programme.
 
Peux tu m'aider à resoudre cet algo pas à pas

n°1533978
franceso
Posté le 27-03-2007 à 09:27:15  profilanswer
 

Pour comprendre ce qui se passe, tu peux prendre un feuille de papier, et noter dessus toutes les variables avec leur valeur. Tu exécutes pas à pas l'algorithme, en reportant bien tous les changements de valeur de tes variables sur ta feuille. Je pense que comme ça tu devrais vite voir comment ça marche.


---------------
TriScale innov
n°1533980
MagicBuzz
Posté le 27-03-2007 à 09:28:28  profilanswer
 

effectivement.
 
un algo, c'est comme une recette de cuisine. et c'est en cuisinant qu'on devient cuisinier :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Aide sur un ALGO

 

Sujets relatifs
Insertion de forum dans un site... Besoin d'aide svp!Besoin d'Aide LotusScript (proche javascript)
[algo] dll -------- merci d'avance pour l'aide -----------Aide pour faire un puissance 4 (algo qui recherche les solution).
iteration --> recursion aide algo simpleBesoin d'aide pour un pb d'algo !! siouplé...
[algo avec alg'exec] j'ai besoin d'aide sur les fonctions et procédureBesoin d'aide pour algo procédures/tableau
Algo C++ : Aide pour un débutant :)BESOIN D'AIDE EN ALGO
Plus de sujets relatifs à : Aide sur un ALGO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR