RECHERCHE DES PALINDROMES D'UN TEXTE SAISI.

PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009 - 28 mai 2008 à 09:32
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009 - 31 mai 2008 à 09:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46796-recherche-des-palindromes-d-un-texte-saisi

PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
31 mai 2008 à 09:02
Merci Monsieur Patatalo .
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
29 mai 2008 à 15:30
ben oui moi pareil,
je l'aurais convertis aisement en objet nasm mais la convertion 16->32 c trop de boulot je prefere refaire a ce moment l?.

on s'est mal compris:
au lieu de
cmp al,truc
je bidule
cmp al,truc
je bidule
tu scan un tableau qui te donne si je ou jne.

le mieux: si tu as de la place, tu fait un tableau de 128 octets de booleens.
apres:
test [arechar+al],1
tu a ton je jne direct avec 1 seul test.

si tu n'as pas de place, tu convertit ce tableau de booleen en bitmap. donc 128bits soit 4DWORD.
apres:
xor eax,eax
mov al,C
mov cl,C
shr al,5 ;?a nous donne l'index DWORD
and cl,(32-1) ; on test 32bits par DWORD.
bt pd[bitmap+eax*4],cl
le flag carry te donne encore une fois le resultat direct.

le tout en 32bits et l?, je dis d'accord, source utile et interessante.

@++
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 mai 2008 à 10:21
Ce n'est pas le programme qui est en cause, c'est qu'il soit en 16 bits.
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
28 mai 2008 à 23:57
Il n'y a aucun programme qui soit inutile, Monsieur BRUNEWS, ça je puis vous l'assurer.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 mai 2008 à 19:39
Un prog comme celui ci en DOS (16 bits) n'a plus aucune raison d'être, en mode console 32 bits (au moins) j'aurais pu le tester alors que là nenni.
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
28 mai 2008 à 18:05
Salutations, encore une fois, PATATALO ;

En fait, je me rends compte que je vous ai mal compris : vous avez suggéré un tableau de caractères non valides au lieu de caractères valides !et non pas un les 2 à la fois comme je l'ai interprété ! Mais dans ce cas, il y aura un problème : je dois mettre les caractères valides afin de les afficher "plus aisément" ; à quoi bon serait-il de mettre à côté dans un tableau les carctères non valides ?

En tout cas, une version plus améliorée de ce programme sera postée ici même : je n'utiliserai pas un tableau de plus : je vais afficher les palindromes directement du buffer.

Merci.
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
28 mai 2008 à 17:55
Bonjour PATATALO ;

Merci pour vos remarques.

1:
En fait, si je réserve un tableau pour les caractères valides et un autre pour les caractères non valides alors je consommerai plus d'espace mémoire.

Ici, j'ai utilisé un seul tableau en plus du buffer, auquel j'ai transféré les carctères valides ; donc j'ai consommé plus d'espace mémoire (il faut juste imaginer le cas où le texte saisi est important !) en transférant au niveau du tableau que les carctères valides, je gagne plus d'espace mémoire qu'en réservant un autre pour les non valides lesquels, de toutes façons, je n'ai pas besoin de les afficher.

2:
Pour votre seconde question, le mode réel est bien plus adéquat que le mode protégé pour un programme DOS comme celui-ci.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 mai 2008 à 16:06
salut,

tu peux egalement te faire un tableau des caracteres valides ou un de caracteres non valides.

pourquoi continuer a travailler en mode réel ??

@++
PCBill Messages postés 48 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 29 septembre 2009
28 mai 2008 à 09:32
Au lieu de vérifier les caractères spéciaux un par un, on peut tester les carctères valides de l'alphabet comme suit :

CMP AL,'a'
JGE verifier_si_inf_a_Z
MP AL,'a'
JB non_alphabet
verifier_si_inf_a_Z:
CMP AL,'Z'
JG non_alphabet
Rejoignez-nous