Algo pour corrigé des fautes de frappes...

Algo pour corrigé des fautes de frappes... - Algo - Programmation

Marsh Posté le 14-03-2006 à 12:10:59    

Bonjour à tous,  
 
je voudrais avoir votre avis sur ma logique est elle bonne ou non ?  
 
l'énnoncé est le suivant :  
 
l'utilisateur doit saisir une phrase et le programme corriger les erreurs du type " ." (il faut enlever l'espace) ou bien alors mettre des majuscules après un point ou en début de phrase.
 
 
je vous donne une ébauche de mon algo :  
 
Debut
 
Afficher "saisir une phrase"  
saisir phrase  
longueur_phrase = longueur(phrase)  
 
pour i de 1 à longeur_phrase
Faire
 
Si (souschaine(phrase,i,2)) = " ."
alors souchaine(phrase,i)) = ""
Finsi
 
Si (souschaine (phrase,1,1) < ... et > ...   //  ... = les valeurs en ASCII en minuscules
alors (souchaine(phrase,1,1) = phrase[1] +32  // 32 pour moi c'est le nombre qu'il faut rajouter au code ascii minuscule pour obtenir la Maj  
Finsi  
 
Si (souschaine (phrase,i,2)) = "." +ASCI > ... et ASCI < ...
Alors (souchaine(phrase,i+1,1))  = phrase[i+1] +32
 
Finpour
 
Afficher phrase  
 
Fin
 
Voila il est inutile de préciser que je débute alors pour toutes suggestion faite moi signe :bounce:  
 

Reply

Marsh Posté le 14-03-2006 à 12:10:59   

Reply

Marsh Posté le 15-03-2006 à 00:13:07    

C est un peu limite comme algo. De la façon dont tu l a écrit ça ne se code pas facilement dans un language. Et il y a des trucs faux.
 
Il faudrait que tu donne la définition de souschaine(...).
 
Les lignes:

Code :
  1. Si (souschaine(phrase,i,2)) = " ."
  2. alors souchaine(phrase,i)) <- ""
  3. Finsi


 
devrait changer la taille du tableau, mais tu ne donne pas à souschaine() le nombre de caractères à remplacer. En plus cest faux, il faudrait remplacer " ." par ".".
 
Ce serait plutot:

Code :
  1. Si (souschaine(phrase,i,2)) = " ."
  2. alors remplacersouchaine(phrase,i,1,"" ))
  3. Finsi


 
Dans:

Code :
  1. souchaine(phrase,1,1) <- phrase[1] +32


 
tu utilise phrase[1], qui est le tout premier caractère de la chaine. Je dirai plutot:
 

Code :
  1. Si (phrase[i]='.' et phrase[i+1]<= 'a' et phrase[i+1]>= 'z' )
  2.   alors phrase[i+1] <- phrase[i+1]-'a'+'A'
  3.   Finsi


 
 
 

Reply

Marsh Posté le 15-03-2006 à 00:14:38    

> En plus cest faux, il faudrait remplacer " ." par ".".  
Ha ouais, pardon j avais pas remarqué que c est ce que tu faisait.

Reply

Marsh Posté le 15-03-2006 à 00:17:14    

> tu utilise phrase[1], qui est le tout premier caractère de la chaine.
et c est aussi ce qu il faut faire, je suis fatigué, je vais me coucher moi!
 
ton algo est à peu près correct

Reply

Marsh Posté le 15-03-2006 à 22:38:29    

ok  :)  merci de m'avoir répondu nargy ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed