Page 1 sur 1

Conversion d'une chaîne et table de multiplication

Posté : 18 déc. 2013, 17:35
par Khyte
Bonjour à tous !

Alors, je suis actuellement des études orientées programmation (donc je suis encore bien débutant en la matière), et je rencontre un petit soucis dans 2 exercices donnés par le prof' ! J'aurais donc besoin de votre aide pour m'orienter correctement ^^

Le premier, c'est de convertir une chaîne de caractère en entier. Mon problème vient du fait que s'il y a autre chose que +, -, 0...9, on doit afficher juste 0 ! Donc, la chaîne "-123456789" deviendra l'entier -123456789, mais si on a "123avza456", on aura 0. Mais je ne vois déjà pas comment on peut afficher juste le 0 (et en plus mon code ne fonctionne pas :( ) :
<?php
$chaine="103gyftyfd6879" ;
	for($i=0 ; $i<strlen($chaine) ; $i++) {
		if($chaine[$i]="0"||$chaine[$i]="1"||$chaine[$i]="2"||$chaine[$i]="3"||$chaine[$i]="4"||$chaine[$i]="5"||$chaine[$i]="6"||$chaine[$i]="7"||
		$chaine[$i]="8"||$chaine[$i]="9"||$chaine[$i]="+"||$chaine[$i]="-")
		echo intval($chaine[$i]) ;
		else
		echo "0" ;
}
?>

Le deuxième, c'est de faire une table de multiplication de ce type : http://j-reaux.developpez.com/tutoriel/ ... cation.jpg

Mais je ne vois pas comment afficher le orange pour la diagonale.

Mon code sur cet exercice :
<?php
echo "<table border=1>" ;
echo "<tr><td bgcolor='grey'>iXj</td>";
    for ($i=1;$i<10;$i++)
    echo "<th bgcolor='yellow'>$i</th>";
echo "</tr>";

    for ($j=1;$j<10;$j++) {
    echo "<tr><th bgcolor='yellow'>$j</th>";
        if($i==$j) {
            for ($i=1;$i<10;$i++) {
            $res=$i*$j ;
            echo "<td bgcolor='orange'>$res</td>";
}
}
        else
            for ($i=1;$i<10;$i++) {
            $res=$i*$j ;
            echo "<td>$res</td>";
}
echo "</tr>";
}
echo "</table>" ;
?>

Merci d'avance !

Re: Conversion d'une chaîne et table de multiplication

Posté : 18 déc. 2013, 18:17
par moogli
salut,

Alors la première à ce rappeler c'est php n'est pas typer, du coup "1" ou 1 c'est la même chose (d'ailleurs c'est aussi la même chose que true).

sinon tu peux simplement suivre les infos de la doc http://www.php.net/manual/fr/language.t ... er.casting :mrgreen:

pour la seconde partie c'est simple tu as déjà le calcul et même le test.
le problème c'est que ut rajoute une boucle qui est inutile il faut juste que tu change la classe css

en pseudo code
si i = j alors
la classe css devient orange
sinon
pas de classe css
fin si

cela se traduit par
début affichage balise (<td )
test valeur et affiche ou pas du style
affichage de la fin du tag plus la donnée

pour info en xml la délimitation des attribut c'est les " et non les '
tu peux parfaitement utiliser les simple quote (') pour délimiter les chaines de caractères en php, ceci afin d'éviter d'utiliser la parseur de chaine de caractère au profit de la concaténation.
- parce que c'est plus rapide
- parce que c'est plus lisible
- pppppaaaarrrrccccceeeee qqqquuuuueeeee

donc echo '<td class="'.$class.'">'.$value.'</td>'; :mrgreen:

exemple de solution http://phpjungle.info/phpfrance/khyte.php

Re: Conversion d'une chaîne et table de multiplication

Posté : 18 déc. 2013, 20:25
par Khyte
Merci beaucoup :) !
Pour le premier, c'est ok, je cherchais compliqué alors que ça ne l'était pas :mrgreen:
Par contre, pour le deuxième, je dois obligatoirement utiliser que du php :? .
(et ok, je penserais à utiliser les ' plutôt que " ^^)

Re: Conversion d'une chaîne et table de multiplication

Posté : 18 déc. 2013, 23:41
par moogli
que du php c'est pas gagner pour la table html ;)

pour le second la solution t’attend quand tu auras trouvé c'est comme cela que fonctionne le code dont j'ai mis le lien.

il te manque juste la traduction en php du pseudo code que j'ai mis c'est simple pas besoin de chercher compliquer ;)


@+

Re: Conversion d'une chaîne et table de multiplication

Posté : 19 déc. 2013, 11:19
par sirakawa
en pseudo code
si i = j alors
la classe css devient orange
sinon
pas de classe css
fin si

en mon pseudocode
si i = j alors
$classe = "diagonale";
sinon
classe = "standard";
fin si

Et je vois mal comment avec seulement du php, à moins de s'imposer:
en mon pseudocode
si i = j alors
$cellule = "<td style = 'background-color:yellow'>$valeur</td>";
sinon
$cellule = "<td>$valeur</td>";
fin si

Re: Conversion d'une chaîne et table de multiplication

Posté : 19 déc. 2013, 11:40
par moogli
@sirakawa : oui c'est la seule solution ;)
par contrer yellow c'est jaune :mrgreen:


je suis déjà loin ....

Re: Conversion d'une chaîne et table de multiplication

Posté : 19 déc. 2013, 12:48
par sirakawa
@sirakawa : oui c'est la seule solution ;)
par contrer yellow c'est jaune :mrgreen:


je suis déjà loin ....
Si tu crois que j'allais me crever à chercher le code de la couleur!! :) :) :)

Re: Conversion d'une chaîne et table de multiplication

Posté : 19 déc. 2013, 17:07
par Khyte
Et pourtant, je dois bien TOUT faire dans la balise php (je trouve ça un peu débile, perso, puisque le mieux serait bien entendu d'utiliser le php avec le html et le css ^^).
Le soucis, c'est bien que même si j'ai mis "si i=j, alors la cellule résultat sera orange", mais ça ne fonctionne pas :(

Re: Conversion d'une chaîne et table de multiplication

Posté : 19 déc. 2013, 17:16
par sirakawa
si $i == $j et non pas $i = $j
= est l'opérateur d'affectation
== est l'opérateur de comparaison
En confidence, ne dis pas à ton prof que tu aimerais bien voir sa solution uniquement en php (c'est un conseil qu'on donne aux candidats à un exam quand ils ne savent pas répondre à une question:"Monsieur, pouvez-vous m'éclairer en me donnant la réponse?").

à moins qu'il ait causé de sprintf ou printf (String Print Formated).... Mais sur cette fonction je suis assez creux.

Annexe: c'est la table d'un multiplicateur donné que tu fais. Comment fait-on pour généraliser la chose?