Code sur Raymod Queneau ....... qui marche pas

Lorenfar Messages postés 2 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 30 avril 2004 - 29 avril 2004 à 18:27
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 1 mai 2004 à 07:09
Salut à toute la communauté.
J'ai un problème avec mon premier scrip.Et oui je suis un noob.
Avant de vous le montrer, je vais vous expliquez à quoi il aurait du servir si il avait marché.
Vous connaissez Raymond Queneau, un écrivain mathématicien. Pour un sujet d'école( je suis en 4°), on doit réaliser un exposé sur lui et les maths.
Donc voilà, le but du script était de prendre un texte et de le modifier avec sa méthode S+n.
J'explique: à chaque lettre du texte on ajoute un nombre donné à sa suite dans l'alphabet. En sachant que le A vaut 1, avec S+7, A devient un H.

Le principe du code est le suivant :
-la chaine de caractère du texte est mise dans un tableau.
-Chaque caractère est transformé en nombre (1=A 2=B etc.)
-on applique un division modulaire par le nombre donné (ex: si on veut transformé x avec S+7, en sachant que x=24, on a 24+7mod26=31mod26=5 donc x vaut E)
-onreforme ensuite une chaine et on l'affiche.
Voici le code:

<html>

<head>

<title>
Transformation de texte avec la méthodee S+n ede Raymond Quenaud
</title>

<script>
//Déclaration de toutes les fonction necessaires au déroulement du programme
function allfunction(txt,n){
transtext(txt)
change()
transform(n)
regroup()

function transtext(txt){
var chaine = new String(txt)
var nb = chaine.length
var cararct = new Array(chaine.length)
for (t=0;t<=nb;t++){
caract[t]=chaine.charAt(t)}}

function change(){
for (rt=0,rt<=chaine.charAt(rt),rt++){
if (caract[rt]="a"){caract[rt]=1} else {}
if (caract[rt]="b"){caract[rt]=2} else {}
if (caract[rt]="c"){caract[rt]=3} else {}
if (caract[rt]="d"){caract[rt]=4} else {}
if (caract[rt]="e"){caract[rt]=5} else {}
if (caract[rt]="f"){caract[rt]=6} else {}
if (caract[rt]="g"){caract[rt]=7} else {}
if (caract[rt]="h"){caract[rt]=8} else {}
if (caract[rt]="i"){caract[rt]=9} else {}
if (caract[rt]="j"){caract[rt]=10} else {}
if (caract[rt]="k"){caract[rt]=11} else {}
if (caract[rt]="l"){caract[rt]=12} else {}
if (caract[rt]="m"){caract[rt]=13} else {}
if (caract[rt]="n"){caract[rt]=14} else {}
if (caract[rt]="o"){caract[rt]=15} else {}
if (caract[rt]="p"){caract[rt]=16} else {}
if (caract[rt]="q"){caract[rt]=17} else {}
if (caract[rt]="r"){caract[rt]=18} else {}
if (caract[rt]="s"){caract[rt]=19} else {}
if (caract[rt]="t"){caract[rt]=20} else {}
if (caract[rt]="u"){caract[rt]=21} else {}
if (caract[rt]="v"){caract[rt]=22} else {}
if (caract[rt]="w"){caract[rt]=23} else {}
if (caract[rt]="x"){caract[rt]=24} else {}
if (caract[rt]="y"){caract[rt]=25} else {}
if (caract[rt]="z"){caract[rt]=26} else {}
if (caract[rt]=""){caract[rt]=-12313151312135121} else { } 
} }

function transform(n){
for (rt=0,rt<=chaine.charAt(rt),rt++){
var np=caract[rt]+n
var bn=np%26
if (caract[bn]=1){caract[bn]="a"} else {}
if (caract[bn]=2){caract[bn]="b"} else {}
if (caract[bn]=3){caract[bn]="c"} else {}
if (caract[bn]=4){caract[bn]="d"} else {}
if (caract[bn]=5){caract[bn]="e"} else {}
if (caract[bn]=6){caract[bn]="f"} else {}
if (caract[bn]=7){caract[bn]="g"} else {}
if (caract[bn]=8){caract[bn]="h"} else {}
if (caract[bn]=9){caract[bn]="i"} else {}
if (caract[bn]=10){caract[bn]="j"} else {}
if (caract[bn]=11){caract[bn]="k"} else {}
if (caract[bn]=12){caract[bn]="l"} else {}
if (caract[bn]=13){caract[bn]="m"} else {}
if (caract[bn]=14){caract[bn]="n"} else {}
if (caract[bn]=15){caract[bn]="o"} else {}
if (caract[bn]=16){caract[bn]="p"} else {}
if (caract[bn]=17){caract[bn]="q"} else {}
if (caract[bn]=18){caract[bn]="r"} else {}
if (caract[bn]=19){caract[bn]="s"} else {}
if (caract[bn]=20){caract[bn]="t"} else {}
if (caract[bn]=21){caract[bn]="u"} else {}
if (caract[bn]=22){caract[bn]="v"} else {}
if (caract[bn]=23){caract[bn]="w"} else {}
if (caract[bn]=24){caract[bn]="x"} else {}
if (caract[bn]=25){caract[bn]="y"} else {}
if (caract[bn]=26){caract[bn]="z"} else {}
if (caract[bn]<1 || caract[bn]>26 ){caract[rt]=-""} else { }
} }

function regroup(){
    var txtf= new String(chainef)
for(rt=0,rt<=chaine.charAt(rt),rt++){
chainef=chainef+caract[rt]
} }

</script>

</head>

<form>

<center>

<textarea cols=50 rows=10 name="txtatransformer" >
Entrez ici le texte que vous voulez transformez
</textarea>

</center>

<center>

</center>

<center>

 
</center>

<center>

<script>
document.write(chainef)
</script>
 
</center>

</form>

</html>


Mon code est très brouillon ( il marche pas,ça bien sur ), si quelqu'un comprend ce que je voulais faire et pourrais m'aider merci beaucoup.

__________________________________________________________

Même un noob peut faire de belles choses ........

3 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 avril 2004 à 10:21
Bonjour
un début de réponse :
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function go()
{  var t;
   s.value="";	// efface résultat
   e.value=e.value.toLowerCase();	// transforme en minuscules
   for (var n=0;n<e.value.length;n++)	// pour tous les caractères entrés
       { t=e.value.charCodeAt(n)+parseInt(v.value,10);	// code ascii + 7
         if (t>122) { t=t-26; }		// si > z ( 122ème caractère en ascii ) 
         s.value=s.value+String.fromCharCode(t); }  }
</script>
</HEAD>

</HTML>

si besoins d'explications ....
pas "testé" à fond ....
Cordialement. Bul.
0
Lorenfar Messages postés 2 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 30 avril 2004
30 avril 2004 à 17:36
Merci beaucoup bultez, ton code marche bien.

Le seul truc qui me gênait c'est qu'il n'y avait pas d'espace mais des virgules entre 2 mot mais j'ai trouvé la solution :
-traiter tous les mots séparément avec comme séparateur " ", un espace.
-Appliquer ta fonction à tous les mots.

Même si mon code n'est pas bon, je voudrais savoir pourquoi, quand je le débugue, il me dit à un moment ("caract[rt]=1") ligne 29 que ce qu'il y a à gauche d'une assignation doit être une variable ou un objet, pourtant mon tableau est déclaré comme variable ?

Un peu d'aided SVP
Merci quand même.
__________________________________________________________
Même un noob peut faire de belles choses ........
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mai 2004 à 07:09
quand on définit un tableau, on ne donne pas
le nombre de postes, mais la valeur des postes.
var t=new Array(10); ne veut pas dire un vecteur de 10
postes, mais un vecteur dont le 1er poste [0] contient 10.
et donc si on utilise t[5] => undefined.
var t=new Array(0,1,2,....); est bien sur possible.
Cordialement. Bul.
0
Rejoignez-nous