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

Signaler
Messages postés
2
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
30 avril 2004
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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.
Messages postés
2
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
30 avril 2004

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 ........
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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.