URGENT: Travail à faire en Javascript pour exam le 07/12/06? Help Please ;-)

Statut
N'est pas ouverte pour d'autres réponses.
T

tanguy_warny

ex membre
Bonjour à tous et à toutes,
je suis étudiant ingénieur en deuxième bachelier et demain j'ai un test sur le javascript... Nous devons pouvoir corriger ces 6 petits programmes en javascript.
Seulmeent je ne omprends rien alors je compte sur votre aide...

Voici les 6 programmes:

n°1:
Ce programme est censé rajouter 10 à tout nomùbre entrer. Or quand j'écris 121 çà n'écrit pas 131 pk?


<html>
<head>
<script>
function Main()
var valeur;
valeur=document.formulaire.boite.value;
document.formulaire.boite.value=valeur+1O;
</script>
</head>
<body>
<form name= formulaire>
<input name="boite" type="text" value="0">
<input type="Button" value="+10" onclick="Main();">
</form>
</body>
</html>


n°2
Dans certains cas çà ne fonctionne pas! Le quel?


function motdepasse ()
{
var code;
var essai;
var levraicode "password";

code=O
essai=prompt(”Entrez le code secret : ","") ;
for(code=O ;code==O ;)
{
if( essai == levraicode){ code=l;}
}
}


n°3:
Dans internet explorer çà indique une erreur, laquelle? Et comment corriger?



function encode ()
{
var cl;
var c2;
cl=prompt ("entrez le premier mot : ",") ;
c2=prompt("entrez le deuxième mot ",") ;
}
function triMots ()
{
var C;
if(c1>c2)
{
c=cl;
cl=c2;
c2=c;
}
}
function Main()
{
encode ();
triMots ();
alert("Mots triés "+c1+" "+c2);
}


n°4:
Choix multiple:
1. ne passera pas par la boucle
2.boucle infinie
3. programme impossible
4. ne fonctionnera qu'une seule fois

Expliquer...


function motdepasse()
{
var code;
var essai;
var levraicode = "password";
for(code=0 ;code==0 ;)
essai=prompt("Entrez le code secret : ","") ;
if( essai == levraicode) { code=1 ;}
}


n°5:
Expliquer comment ce programme fonctionne. QUel instruction logique manque-t-il?


var param;
function trigo ()
{
document.write("Calculs en cours. Veuillez patienter. ")
param = Math.sin(Math.acos(param+10));
}

function Main()
{
param=parseFloat(prompt("Entrez un nombre : ","")) ;
trigo() ;
}



n°6:

Rajouter les commantaires 1 et 2 plus terminer le programme de façon à calculer et ecrire les ecarts entre la note et la moyenne!
var n,compteur;
var somme,moyenne,ecart;
var note= new Array();
function Main ()
{
for (n=0:beuh:n<1)||(n>l00);)
{
n=parseInt(prompt(”nb notes (100 maxi)?",""));
}
//Commentaire 1
somme0;
for(compteur=O ;compteur<n; compteur=compteur+1)
{
note[compteur]=parseFloat(prompt((compteur+1)+"è cote ?"));
somme=somme+note[compteur] ;
}
//Commentaire 2
moyenne=somme/n;
document.write("moyenne : "+moyenne);
//calcul et affichage des écarts

.......

Merci mille fois à ceux qui seront m'aider....

Amuser vous bien


Tanguy
 
M

makiavili

ex membre
Voici pourle 1er

<html>
<head>
<script type="text/javascript">
function Main(){
var valeur;

valeur = document.formulaire.boite.value;
document.formulaire.boite.value = (valeur * 1) + 10;

}
</script>
</head>
<body>
<form name="formulaire">
<input name="boite" type="text" value="0">
<input type="Button" value="+10" onclick="Main()">
</form>
</body>
</html>
 

null

ose();
Numéro 2 :

tanguy_warny a dit:
Dans certains cas çà ne fonctionne pas! Le quel?


function motdepasse ()
{
var code;
var essai;
var levraicode "password";

code=O
essai=prompt(”Entrez le code secret : ","") ;
for(code=O ;code==O ;)
{
if( essai == levraicode){ code=l;}
}
}
Les fautes en recopiant :

var levraicode = "password";
Après avoir rentré son mot de passe, si celui-ci est faux, il va tourner en boucle car on ne lui redemande pas (plus de lecture pour modifier la variable essai et pas de partie "ForUpdate").

Numéro 3 :

tanguy_warny a dit:
Dans internet explorer çà indique une erreur, laquelle? Et comment corriger?

function encode ()
{
var cl;
var c2;
cl=prompt ("entrez le premier mot : ",") ;
c2=prompt("entrez le deuxième mot ",") ;
}
function triMots ()
{
var C;
if(c1>c2)
{
c=cl;
cl=c2;
c2=c;
}
}
function Main()
{
encode ();
triMots ();
alert("Mots triés "+c1+" "+c2);
}
Les fautes en recopiant :

En fait, tu as mis "cl" au lieu de "c1", ça change rien à ma réponse finale mais c'est juste pour que ça soit plus clair : on parle bien de c1 et c2

cl=prompt ("entrez le premier mot : ","") ;
c2=prompt("entrez le deuxième mot ","") ;
Dans ta fonction encode(), tu lis deux valeurs que tu mets dans des variables locales (donc à la fonction encode()). Ensuite, tu utilises triMots() qui fait appel à c1 et c2 qui ont été utilisés dans encode() mais avec une portée locale, ce qui veut dire qu'elles sont détruites à la fin de encode(), et tu fais appel à des variables inexistantes.

Numéro 4 :

tanguy_warny a dit:
Choix multiple:
1. ne passera pas par la boucle
2. boucle infinie
3. programme impossible
4. ne fonctionnera qu'une seule fois

Expliquer...


function motdepasse()
{
var code;
var essai;
var levraicode = "password";
for(code=0 ;code==0 ;)
essai=prompt("Entrez le code secret : ","") ;
if( essai == levraicode) { code=1 ;}
}
Il va boucler indéfiniment (donc la réponse 2) mais ça dépend de ce qu'on nomme "programme impossible" car c'est bien un programme qui va jamais fonctionner :-D

! Vérifie bien si tu n'as pas mal recopié car ça changerait la réponse.

Tu fais une boucle, mais seulement tu fais qui initialise code à 0 et qui a comme condition "code==0" (qui vaut "vrai"). Cependant, code ne sera jamais modifié car il ne fait pas partie du bloc for. Si tu regardes bien, tu remarqueras qu'il n'y a pas d'accolades à ton for, ce qui veut dire qu'il n'y a qu'une instruction à ta boucle qui est la demande du mot de passe. Le test conditionnel qui pourrait changer la valeur de code (vérification du mot de passe) se fait en dehors de la boucle mais celle-ci ne se terminera jamais car code n'aura jamais la possibilité de changer de valeur.

Numéro 5 :

tanguy_warny a dit:
Expliquer comment ce programme fonctionne. QUel instruction logique manque-t-il?


var param;
function trigo ()
{
document.write("Calculs en cours. Veuillez patienter. ")
param = Math.sin(Math.acos(param+10));
}

function Main()
{
param=parseFloat(prompt("Entrez un nombre : ","")) ;
trigo() ;
}
Le "programme" demande à l'utilisateur un nombre qui est transformé en "float". Ensuite la fonction trigo() va afficher "Calculs en cours. Veuillez patienter." et le programme va faire le sinus de l'arc cosinus de la valeur d'entrée plus 10.

Cependant, je pense que la valeur pour l'arc cosinus doit être comprise entre "-1" et "1", sinon ça n'ira pas. Le problème c'est qu'il fait le "+10", ce qui fait qu'il faudrait ajouter la condition :

if((param+10) <= 1 && (param+10) >= -1))
// on peut continuer l'éxécution, sinon on affiche une erreur
! Ca me semble hyper tordu, donc il faudrait que tu demandes à quelqu'un autre, ou alors si vous avez appris une technique spéciale avec les arc cosinus & co =]

Numéro 6 :

tanguy_warny a dit:
Rajouter les commantaires 1 et 2 plus terminer le programme de façon à calculer et ecrire les ecarts entre la note et la moyenne!
var n,compteur;
var somme,moyenne,ecart;
var note= new Array();
function Main ()
{
for (n=0:beuh:n<1)||(n>l00);)
{
n=parseInt(prompt(”nb notes (100 maxi)?",""));
}
//Commentaire 1
somme0;
for(compteur=O ;compteur<n; compteur=compteur+1)
{
note[compteur]=parseFloat(prompt((compteur+1)+"è cote ?"));
somme=somme+note[compteur] ;
}
//Commentaire 2
moyenne=somme/n;
document.write("moyenne : "+moyenne);
//calcul et affichage des écarts
Les fautes en recopiant :

for(compteur=0; compteur<n; compteur=compteur+1)
var n,compteur;
var somme,moyenne,ecart;
var note= new Array();

function Main()
{
for (n=0:beuh:n<1)||(n>100);)
{
n=parseInt(prompt("nb notes (100 maxi)?",""));
}

//On met la somme totale des points à 0.
//On lit les points et on ajoute dans un tableau (note)
somme = 0;

for(compteur=0 ;compteur<n; compteur=compteur+1)
{
note[compteur]=parseFloat(prompt((compteur+1)+"è cote ?"));
somme=somme+note[compteur] ;
}

//On divise la somme des points par le nb de notes et on l'affiche
moyenne=somme/n;
alert("moyenne : "+moyenne);

//calcul et affichage des écarts
document.write("Ecarts :<br>");

for(compteur=0; compteur < n; compteur = compteur+1)
{
if(note[compteur] > moyenne)
ecart = note[compteur]-moyenne;
else
ecart = moyenne-note[compteur];

document.write((compteur+1)+"è cote : "+ ecart +"<br>");
}
}
Les <br> servent uniquement à aller à la ligne d'en dessous.

! Il y a cependant un petit problème avec ce code ! A cause des document.write(), ils n'arrivent plus à utiliser les variables n, compteur, note mais si je remplace les document.write() par des alert(), ça fonctionne. Je ne sais absolument pas pourquoi mais je n'avais jamais remarqué ce problème auparavant. Je pense pas qu'il verra le problème mais essaye quand même de trouver une parade (copie des valeurs, en local, ...).

Bonne chance :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut