Problème condition

Résolu/Fermé
oexa - 26 juin 2012 à 11:05
 oexa - 26 juin 2012 à 11:22
Bonjour,
Le code qui va suivre est en Javascript, mais quelqu'un qui fait du C pourra sans doute me répondre, puisque la syntaxe du Javascript ressemble beaucoup a celle du C.


Voici mon code qui bug à la condition, d'après jsFiddle:
if((dizaines = 1 || dizaines = 7 || dizaines = 9) && (unitees > 0 && unitees < 7)){
	
	alert(unitees+dizaines);
	
	switch (dizaines){
		case 1:
		dizaines = "";
		unitees = memoireexeptions[unitees];
		break;
		case 7:
		dizaines = "soixante";
		unitees = memoireexeptions[unitees];
		break;
		case 9:
		dizaines = "quatre-vingt";
		unitees = memoireexeptions[unitees];
	}
}else{
unitees = memoireunitees[unitees];
dizaines = memoiredizaines[dizaines];
}


Pourquoi cette condition bug ?


Et voila mon code en entier, pour plus de compréhension:
var entreeUtilisateur, unitees, dizaines, centaines,
	memoireunitees = ['zero', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf'],
	memoiredizaines = ['', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingt', 'quatre-vingt-dix'],
	memoirecentaines = ['', 'cent', 'deux-cent', 'trois-cent', 'quatre-cent', 'cinq-cent', 'six-cent', 'sept-cent', 'huit-cent', 'neuf-cent'],
	memoireexeptions = ['', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize'];

do{
    entreeUtilisateur = prompt('entrez un nombre entier de 0 a 999');
    
}while (entreeUtilisateur < 0  || entreeUtilisateur > 999 || isNaN(entreeUtilisateur));

unitees = entreeUtilisateur % 10;
dizaines = (entreeUtilisateur % 100 - unitees) /10;
centaines = (entreeUtilisateur % 1000 - unitees - dizaines*10) /100;

if((dizaines = 1 || dizaines = 7 || dizaines = 9) && (unitees > 0 && unitees < 7)){
	
	alert(unitees+dizaines);
	
	switch (dizaines){
		case 1:
		dizaines = "";
		unitees = memoireexeptions[unitees];
		break;
		case 7:
		dizaines = "soixante";
		unitees = memoireexeptions[unitees];
		break;
		case 9:
		dizaines = "quatre-vingt";
		unitees = memoireexeptions[unitees];
	}
}else{
unitees = memoireunitees[unitees];
dizaines = memoiredizaines[dizaines];
}
centaines = memoirecentaines[centaines];

alert(centaines+"-"+dizaines+"-"+unitees);


Merci de votre aide !

1 réponse

LeChikito Messages postés 1589 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 3 août 2012 322
26 juin 2012 à 11:06
Bonjour,
Quelle est le message d'erreur affiché?
Cordialement,
1
Error:
Problem at line 16 character 30: Bad assignment.
if((dizaines = 1 || dizaines = 7 || dizaines = 9) && (unitees > 0 && unitees ...

Problem at line 16 character 30: Stopping, unable to continue. (43% scanned).
Implied global: prompt 8


Ça :/
0
LeChikito Messages postés 1589 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 3 août 2012 322
26 juin 2012 à 11:11
J'ai un doute, mais ne serait-ce pas cette sintaxe?
if((dizaines == 1 || dizaines == 7 || dizaines == 9)
0
Je cherche a ce qu'on rentre dans la condition lorsque dizaine=1 ou 7 ou 9 et unitees <7 et >0
Donc je comprend pas trop pourquoi ça marche pas
0
LeChikito Messages postés 1589 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 3 août 2012 322
26 juin 2012 à 11:16
Dans les conditions, il faut mettre == pour une comparaison.
Un = simple sert d'allocation, et donc provoque une erreur lorsqu'il est placé dans un if.
Remplacez les = simples par des == et redites nous si cela a marché.
0
Oui ça a marché !
(Oh non, quel erreur stupide, enfin c'est comme ça qu'on apprend)
Merci beaucoup !
0