Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

CLICMOT

10 réponses
Avatar
Scalpa
voilà où j'en suis : http://www.scalpa.info/fr_gram_01_cliccod.php Mais ça
zone (des fois) sur le comptage des points et je ne comprends par pourquoi !
Et le générateur ici http://www.scalpa.info/gencliccod.php




--
scalpa

10 réponses

Avatar
Pascal Poncet
Le 30/01/2011 20:59, Scalpa a écrit :
voilà où j'en suis : http://www.scalpa.info/fr_gram_01_cliccod.php Mais
ça zone (des fois) sur le comptage des points et je ne comprends par
pourquoi !



C'est ton découpage des scores qui ne colle pas.
Il faut regrouper le comptage dans la même boucle.

En gros, ça donnerait :

function corrige() {
var nbTypes = {su: 0, ve: 0, cd: 0, ci: 0, cc: 0};
var nbChoix = {su: 0, ve: 0, cd: 0, ci: 0, cc: 0};
var exo = document.getElementById('exo');
var mots = exo.getElementsByTagName('span');
var nbMots = mots.length;
for (var i=0; i < nbMots; i++) {
var type = mots[i].id.substring(0, 2);
nbTypes[type] ++;
var choix = mots[i].className;
if (choix == type) nbChoix[type] ++;
}
var scores = [
(nbChoix.su * 100 / (nbTypes.su || 1)).toFixed(2) + "% des sujets",
(nbChoix.ve * 100 / (nbTypes.ve || 1)).toFixed(2) + "% des verbes",
(nbChoix.cd * 100 / (nbTypes.cd || 1)).toFixed(2) + "% des COD",
(nbChoix.ci * 100 / (nbTypes.ci || 1)).toFixed(2) + "% des COI",
(nbChoix.cc * 100 / (nbTypes.cc || 1)).toFixed(2) + "% des
compléments circonstanciels"
];
var scoreFinal = "Tu as trouvé " + scores.join(", ") + ".";
document.getElementById('FeedBack').innerHTML = scoreFinal;
}

Du coup, tu n'as pas besoins, je crois, de lister les mots de chaque
type dans des tableaux (var motsSujet =['nous','John','Doe',...]).

Précision : l'écriture des scores, avec '(nbTypes.xx || 1)' en diviseur,
peut te sembler bizarre. En fait, c'est pour éviter la division par zéro
au cas où il n'y aurait aucun mots du type correspondant dans l'exercice.
De plus, cette partie aurait pu être automatisée avec une boucle sur les
valeurs d'option récupérées du select. Comme l'initialisation des objets
nbChoix et nbTypes, sur le même principe.


--
Cordialement,
Pascal
Avatar
Olivier Miakinen
Le 31/01/2011 00:31, Pascal Poncet a écrit :
Le 30/01/2011 20:59, Scalpa a écrit :
[...]





Merci à tous les deux !
Avatar
SAM
Le 30/01/11 20:59, Scalpa a écrit :

voilà où j'en suis : http://www.scalpa.info/fr_gram_01_cliccod.php Mais
ça zone (des fois) sur le comptage des points et je ne comprends par
pourquoi !



J'obtiens :
- 14% pour les sujets (au lieu de 60% à mon idée)
- 9% pour chacun des autres (au lieu de 0% puisque aucun cliqué)

De toutes façons, tant qu'on aura :

<span id="su11">La</span> <span id="su12">plupart</span> <span
id="su13">des</span> <span id="su14">mesures</span> <span
id="su15">de</span> <span id="su16">longueur</span>

c'est à dire que chaque mot de
"La plupart des mesures de longueur"
est *UN* sujet

le comptage va chier

Et le générateur ici http://www.scalpa.info/gencliccod.php



donc commencer par revoir ce générateur afin qu'un groupe de mots puisse
être sujet (ou complément, ou ... autre torture grammaticale)

--
Stéphane Moriaux avec/with iMac-intel
Avatar
Scalpa
"Pascal Poncet" a écrit dans le
message de news:ii4scc$o88$
Le 30/01/2011 20:59, Scalpa a écrit :
voilà où j'en suis : http://www.scalpa.info/fr_gram_01_cliccod.php Mais
ça zone (des fois) sur le comptage des points et je ne comprends par
pourquoi !



C'est ton découpage des scores qui ne colle pas.
Il faut regrouper le comptage dans la même boucle.




Ah bon? Je ne comprends pas pourquoi....


En gros, ça donnerait :



C'est du gros bien détaillé......... merci.
J'ai découvert toFixed que je ne connaissais pas.
Et la déclaration de tableaux ? (à plusieurs dimensions?) var nbTypes = {su:
0, ve: 0, cd: 0, ci: 0, cc: 0};




function corrige() {
var nbTypes = {su: 0, ve: 0, cd: 0, ci: 0, cc: 0};
var nbChoix = {su: 0, ve: 0, cd: 0, ci: 0, cc: 0};
var exo = document.getElementById('exo');
var mots = exo.getElementsByTagName('span');
var nbMots = mots.length;
for (var i=0; i < nbMots; i++) {
var type = mots[i].id.substring(0, 2);
nbTypes[type] ++;
var choix = mots[i].className;
if (choix == type) nbChoix[type] ++;
}
var scores = [
(nbChoix.su * 100 / (nbTypes.su || 1)).toFixed(2) + "% des sujets",
(nbChoix.ve * 100 / (nbTypes.ve || 1)).toFixed(2) + "% des verbes",
(nbChoix.cd * 100 / (nbTypes.cd || 1)).toFixed(2) + "% des COD",
(nbChoix.ci * 100 / (nbTypes.ci || 1)).toFixed(2) + "% des COI",
(nbChoix.cc * 100 / (nbTypes.cc || 1)).toFixed(2) + "% des compléments
circonstanciels"
];
var scoreFinal = "Tu as trouvé " + scores.join(", ") + ".";
document.getElementById('FeedBack').innerHTML = scoreFinal;
}

Du coup, tu n'as pas besoins, je crois, de lister les mots de chaque type
dans des tableaux (var motsSujet =['nous','John','Doe',...]).

Précision : l'écriture des scores, avec '(nbTypes.xx || 1)' en diviseur,
peut te sembler bizarre. En fait, c'est pour éviter la division par zéro
au cas où il n'y aurait aucun mots du type correspondant dans l'exercice.

De plus, cette partie aurait pu être automatisée avec une boucle sur les
valeurs d'option récupérées du select. Comme l'initialisation des objets
nbChoix et nbTypes, sur le même principe.



Là je ne vois pas ce que tu veux dire....




Dans (nbChoix.cc * 100 / (nbTypes.cc || 1)).toFixed(2)
(nbTypes.cc || 1) veut que on teste nbTypes.cc et s'il est égal à 0 alors on
prends 1 ?

C'est beaucoup moins bourrin que mon code.... Ya pas! J'ai testé en ligne et
cela marche bien semble-t-il.

Merci
scalpa
Avatar
Scalpa
"SAM" a écrit dans le message
de news:4d468213$0$32438$
De toutes façons, tant qu'on aura :

<span id="su11">La</span> <span id="su12">plupart</span> <span
id="su13">des</span> <span id="su14">mesures</span> <span
id="su15">de</span> <span id="su16">longueur</span>

c'est à dire que chaque mot de
"La plupart des mesures de longueur"
est *UN* sujet

le comptage va chier


On est bien d'accord.... la dessus: c'est du bricolage approximatif à la
hauteur de mes compétences. Ca donne une idée quand même sur la compétence
du môme.
Sans doute dans le générateur je devrai ajouter un menu déroulant contenant
phrase1 phrase2 etc. et me servir de la value pour ajouter à l'Id un truc du
genre id="P1su0" id="P1su1" etc. et puis au moment de la correction et
ben..........heu .......... je ne sais pas faut que j'y
réfléchisse..........


--
scalpa
Avatar
Pascal Poncet
Le 31/01/2011 20:03, Scalpa a écrit :
C'est ton découpage des scores qui ne colle pas.
Il faut regrouper le comptage dans la même boucle.



Ah bon? Je ne comprends pas pourquoi....



Je sais plus trop, mais je crois me souvenir que tes boucles basaient
leur nombre de passages sur le total de chaque type de mots.
Du coup, elles n'allaient pas au bout de l'exercice, c'est à dire du
nombre de mots total.

Et la déclaration de tableaux ? (à plusieurs dimensions?) var nbTypes > {su: 0, ve: 0, cd: 0, ci: 0, cc: 0};



Non, ce ne sont pas des tableaux multi-dimensionnés.
En fait, ce sont des tableaux associatifs (ils associent, pour chaque
élément du tableau, une clé et une valeur), que JS traite comme des
objets littéraux (l'association devient propriété/valeur).

De plus, cette partie aurait pu être automatisée avec une boucle sur
les valeurs d'option récupérées du select. Comme l'initialisation des
objets nbChoix et nbTypes, sur le même principe.



Là je ne vois pas ce que tu veux dire....



Oh, c'était un point de détail, pour le JS, d'autant que ça pourra être
traité par ton générateur PHP, d'après ce que j'ai compris.
L'idée était d'utiliser les valeurs et textes des options de sélection
pour construire le tableau 'scores', mais je crois qu'on peut laisser
tomber (ça vaudrait peut-être le coup s'il y avait plus d'une dizaine de
types de mot à gérer).

Dans (nbChoix.cc * 100 / (nbTypes.cc || 1)).toFixed(2)
(nbTypes.cc || 1) veut que on teste nbTypes.cc et s'il est égal à 0
alors on prends 1 ?



C'est exactement ça !


--
Cordialement,
Pascal
Avatar
Pascal Poncet
Le 31/01/2011 20:22, Scalpa a écrit :
c'est à dire que chaque mot de
"La plupart des mesures de longueur"
est *UN* sujet
[...]


[...]
Sans doute dans le générateur je devrai ajouter un menu déroulant
contenant phrase1 phrase2 etc. et me servir de la value pour ajouter à
l'Id un truc du genre id="P1su0" id="P1su1" etc. et puis au moment de la
correction et ben..........heu .......... je ne sais pas faut que j'y
réfléchisse..........



Je ne suis pas sûr, mais une piste serait de chercher à rassembler
automatiquement dans un seul SPAN les mots contigus de même type.
Mais j'ai des doutes sur la simplicité du truc.
Enfin là c'est plus JS, c'est PHP qui pilote, donc autre newsgroup.


--
Cordialement,
Pascal
Avatar
Dr J R Stockton
En fr.comp.lang.javascript <ii4scc$o88$, Lun, 31 Jan
2011 00:31:29, Pascal Poncet a
ecrit:

(nbChoix.su * 100 / (nbTypes.su || 1)).toFixed(2) + "% des sujets",



CAVEAT : En MSIE <= 8, 0.007.toFixed(2) -> 0.00 // Ugh - mais IE9 OK ?

Voyez <http://www.merlyn.demon.co.uk/js-flaws.htm>?

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk IE8 FF3 Op10 Sf5 Cr7
news:comp.lang.javascript FAQ <http://www.jibbering.com/faq/index.html>.
<http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Avatar
Pascal Poncet
Le 01/02/2011 20:30, Dr J R Stockton a écrit :
CAVEAT : En MSIE<= 8, 0.007.toFixed(2) -> 0.00 // Ugh - mais IE9 OK ?



Argh... j'avais oublié qu'il existait encore, ce navigateur ! ;-)
Plus sérieusement, il me semblait que le bug avait été résolu dès la
version 8. Mea culpa, donc, et merci pour la précision.

--
Cordialement,
Pascal
Avatar
Dr J R Stockton
En fr.comp.lang.javascript message <iib746$m92$, 2
Feb 2011 10:11:55, Pascal Poncet
a ecrit:

Le 01/02/2011 20:30, Dr J R Stockton a écrit :
CAVEAT : En MSIE<= 8, 0.007.toFixed(2) -> 0.00 // Ugh - mais IE9 OK ?



Argh... j'avais oublié qu'il existait encore, ce navigateur ! ;-)
Plus sérieusement, il me semblait que le bug avait été résolu dès la
version 8. Mea culpa, donc, et merci pour la précision.




Oui, on m'a ecrit que c'est OK en IE 9beta.

Mais, en IE 6 7 8 9beta,

S = "3000000000000000000000000" // 3e24
parseFloat(S+".0")/parseFloat(S) // 10
Math.round(+(S+".0") / +(S+" ")) // 10

Mes autres navigateurs : 1, 1.

<http://www.merlyn.demon.co.uk/js-flaws.htm#Auto>.

--
(c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05 IE 8.
Web <http://www.merlyn.demon.co.uk/> - FAQ-type topics, acronyms, and links.
Command-prompt MiniTrue is useful for viewing/searching/altering files. Free,
DOS/Win/UNIX now 2.0.6; see <URL:http://www.merlyn.demon.co.uk/pc-links.htm>.