Algorithme Palindromique!! - Algo - Programmation
Marsh Posté le 06-11-2005 à 03:12:02
Heu, un petit probleme , je vois que les signes d'affectation n'ont pas été correctement retranscrit. donc les carrés reprsentes les signes d'affectation .
Marsh Posté le 06-11-2005 à 03:27:10
T'as fait la trace de ton algo ?
Marsh Posté le 06-11-2005 à 11:41:13
La trace à la main? pas très crédible!
Non, en faite j'ai plus envie de le programmer en langage visual basic pour voir si ça fonctionne.
pour cela je voulais savoir quelle est la syntaxe de ces fonction en visual basix??
-Len()
-Mid()
- et Asc()
Marsh Posté le 06-11-2005 à 11:42:41
Mais si vous pensez que ça marche, confirmez le moi please.
Marsh Posté le 06-11-2005 à 13:12:28
harlem a écrit : La trace à la main? pas très crédible! |
C'est pourtant comme ça qu'on vérifie un algo quand on en est pas sûr, on le déroule à la main
Marsh Posté le 06-11-2005 à 15:25:06
Pour faire la trace j'aimerai deja savoir si les fonctions que j'ai utilisé sont bonnes, sinon je prefere le tester en vb (ou en C) , alors quelles sont les equivalents des fonctions:
-Len() >>renvoie le nombre de caractères dune chaîne
-Mid() >>renvoie un extrait de la chaîne, commençant au caractère n1 et faisant n2 caractères de long.
- et Asc() >>renvoie le caractère correspondant à un code Ascii donné
Voila je dois le rendre demain, et j'aimerai tout simplement verifier, la fiabilité de l'algo
Marsh Posté le 06-11-2005 à 17:27:57
Un peu de recherche s'imposait, puisque personne n'avait la réponse (?)
j'ai l'ai transporté en vb et ça marche :
Dim chaine As String
Dim Tabchaine(40) As String
Dim Nbchaine As Integer
Dim I As Integer
Dim J As Integer
Dim k As Integer
Dim test As Boolean
'Debut du programme
chaine = InputBox("Saisir la phrase ou le mot (pas de minuscule accentuées)" )
Nbchaine = Len(chaine)
I = 0
J = 0
Do Until J = Nbchaine
J = J + 1
'Recuperation de chaque caractere de la variable chaine dans un tabelau
Tabchaine(I) = Mid(chaine, J, 1)
'Suppression de tous caracteres autres que les majuscules et minuscules
If Asc(Tabchaine(I)) > 64 And Asc(Tabchaine(I)) < 91 Or Asc(Tabchaine(I)) > 96 And Asc(Tabchaine(I)) < 123 Then
I = I + 1
End If
Loop
I = I - 1
MsgBox ("I vaut " & I)
For k = 0 To I
'Convertion des minuscules en majuscules
If Asc(Tabchaine(k)) > 90 Then
inter = Asc(Tabchaine(k)) - 32
Tabchaine(k) = Chr(inter)
End If
Next
k = 0
For k = 0 To I
MsgBox Tabchaine(k)
Next
k = 0
test = True
Do Until k = I Or k = I - 1 Or test = False
'Verification
If Tabchaine(k) = Tabchaine(I) Then
test = True
Else
test = False
End If
k = k + 1
I = I - 1
Loop
If test = True Then
MsgBox ("Brravo, ce mot(ou cette phrase) est un palindrome" )
Else
MsgBox ("Désolé, ce mot (ou cette phrase) n'est pas un palindrome" )
End If
End Sub
Marsh Posté le 06-11-2005 à 03:10:06
Voila je voulais savoir si cette algo est correct?
L'utilisateur doit saisir un mot ou une phrase, et on souhaite savoir si ce mot ou cette phrase est un palindrome,
On doit changer tout les lettres en majuscules, et supprimer tout les autres cararectere (ponctuation espace..).
Voila l'algo :
ALGORITHLME PLAINDROME
DECLARATION DES VARIABLES
Variable Type definition
Chaine Chaine de caractere / phrase ou mot
Tabchaine[40] Tableau de caractere /tableau des caractere de la variable chaine
Nbchaine Entier /Nombre de caractère de la variable chaine
I Entier /
J Entier /
K Entier /
Test Boolean
DEBUT
Afficher (« Saisir la phrase ou le mot (pas de minuscule accentuées) »)
Saisir (Chaine)
NbchaineLen(chaine)
I1
J0
Repeter
JJ+1
// Recuperation de chaque caractere de la variable chaine dans un tableau
Tabchaine[I]Mid(chaine, J, 1)
//Suppression de tous caracteres autres que les majuscules et minuscules
SI Asc(Tabchaine[I]) >64 et Asc(Tabchaine[I]) <91
OU Asc(Tabchaine[I])>96 et Asc(Tabchaine[I])<123 Alors
II+1
Fin Si
Jusqu'à J=Nbchaine
Pour K de 1 à I
//Convertion des minuscules en majuscules
SI Asc(Tabchaine[K])>90 Alors
Asc(Tabchaine[K]) Asc(Tabchaine[K])-32
Fin pour
K1
Repeter
//Verification
Si Tabchaine[K]=Tabchaine[I]
Alors Test=Vrai
Sinon Test=faux
Fin si
KK+1
II-1
Jusquà K=I ou K=I-1 ou Test=Faux
Si Test=Vrai
Alors Afficher « Bravo, ce mot ou cette phrase est un palindrome »
Sinon Afficher « Désolé, ce mot/cette phrase nest pas un palindrome »
Fin si
FIN
Message édité par harlem le 06-11-2005 à 17:30:35