nr 1 tm 100 in tabel waarbij alles deelbaar door zeven een melding krijgt en...

Status
Niet open voor verdere reacties.

Elizabeth F

Gebruiker
Lid geworden
31 jul 2007
Berichten
55
Hallo,

Als opdracht moet ik maken een getallenreeks van 1 t/m 100 in een tabel waarbij alle getallen deelbaar door zeven de woorden deelbaar door zeven naast zich krijgen en alle getallen deelbaar door twee grijs gemaakt worden.

Ik heb de volgende code:
PHP:
<html>
<head>
<style type="text/css">
.grijs{
	background-color: gray;
}
.wit{
	background-color: white;
}
</style>

</head>


<body>



<?php

/**
 * @author 
 * @copyright 2009
 */

echo "<table border=1>";
for ($nr=1; $nr<=100; $nr++){
echo "<tr>";
//echo "<td>$nr.<br>\n"."</td>";

	$zeven=$nr/7;

		if (is_int($zeven)){
		echo "<td>$nr</td><td>"."deelbaar door zeven.<br>\n"."</td>";
		
		}
	$grijs=$nr/2;
	
	if (is_int($grijs)){
		echo "<tr class=\"grijs\"><td>$nr</td><td></td>";
	}
	else{
		echo "<tr class=\"wit\"><td>$nr</td><td></td>";
	}
}
echo "</tr>";
echo"</table>";

?>


</body>
</html>
Mijn probleem is dat ik twee if statements wil laten uitmonden in één echo.
Hoe doe ik dat?
Hopelijk snappen jullie wat ik bedoel.
 
Laatst bewerkt door een moderator:
Ik vraag mij af waarom je modulo niet gebruikt.

Echter is je echte probleem volgens mij dat je alle even getallen die ook deelbaar zijn door 7 2x in je lijst krijgt.

Dit lijkt mij iets makkelijker:
PHP:
echo '<table border="1">';
for ($nr=1; $nr<=100; $nr++) {
	if($nr % 2 == 0) {
		$class = 'grijs';
	} else {
		$class = 'wit';
	}
	if($nr % 7 == 0) {
		$comment = 'deelbaar door zeven.';
	} else {
		$comment = '&nbsp;';
	}
	echo '<tr class="'. $class .'"><td>'. $nr .'</td><td>'. $comment .'<br>'. "\n</td></tr>";
}
echo'</table>';
 
Ik snap het niet helemaal.

Wat bedoel je met modulo

en wat betekend if($nr % 2 == 0). Ik ben nog maar een beginner.
 
Modulo is de restwaarde van een deling.

PHP:
if($nr % 2 == 0).
Is dan ook de modulo (%), stel dat $nr 21 is.
Dan staat er dus
PHP:
if(21 % 2 == 0).
21 wordt dan net zo lang door 2 gedeeld tot er iets overblijft.
In dit geval zal dat dus op 1 uitkomen.

Aangezien 21 tien keer door twee kan worden gedeeld en er dan nog 1 overblijft.
 
Kan je me niet een oplossing geven in de stijl van de code die ik al heb? Dan snap ik het tenminste.
 
Modulo rekenen 101:

Wiskundige definitie:
Code:
 A = kD + r
Met A het getal dat je als invoer hebt,
D de deler,
k het aantal keer dat je A op D kunt delen
en r de rest die overblijft.

Als je bijvoorbeeld
Code:
13 = 3 * 4 + 1
neemt dan zie je dat je dertien driemaal kunt delen door vier, en dat er vervolgens nog 1 overblijft.

Dat betekend dat 13 gedeeld door 4 dus 3 oplevert (ofwel: je kunt 13 precies 3 keer delen op 4, als je de rest weglaat)
Het betekend ook (en daar ben je in geinteresseerd) dat er na de deling nog 1 overblijft...

Dus, 13 modulo 4 = 1.

Dit is iets wat je hoe dan ook zult moeten leren; kun je het net zo goed nu meteen doen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan