PHP Pascalsches Dreieck?
Hallo,
bin grad am "tüfteln" vom Pascalschen Dreieck und habe 2 Probleme:
Wieso haben bei mir die Zellen unterschiedliche Breiten, und, was ist der einfachste weg, dass es auch ausschaut wie ein Pascalsches Dreieck und nicht alles lin ksbündig ist?
Code
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Pascal'sches Dreieck</title>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
<style>
.table {
font-family: Arial, Helvetica, sans-serif;
border-style: solid 1px;
border-spacing: 1;
border-collapse: collapse;
overflow: hidden;
width: 70%;
margin: 0 auto;
position: relative;
}
.zellen {
border: 1px solid #000;
}
</style>
</head>
<body bgcolor=#DDDDDD text=#0000AA>
<form action="<?php $PHP_SELF ?>" method="post">
<pre>
eingabe: <input type="text" name = "eingabe" size="4">
<input type="submit" name="schalter" value="OK">
</pre>
</form>
<?php
if(isset($_POST["schalter"])){
$eingabe = $_POST["eingabe"];
print "<table class=\"table\">";
for($zeile = 1; $zeile <= $eingabe; $zeile++){ //Zeilen
print "<tr>";
for($spalte = 1; $spalte <= $zeile; $spalte++){ //Spalten
if($spalte == 1 OR $spalte == $zeile){
$array[$zeile][$spalte] = 1;
print "<th class=\"zellen\">".$array[$zeile][$spalte]."</th>";
}else{
$array[$zeile][$spalte] = $array[$zeile-1][$spalte-1] + $array[$zeile-1][$spalte];
print "<th class=\"zellen\">".$array[$zeile][$spalte]."</th>";
}
// $array[$i][$j] = 1;
}
}
print "</tr></table>";
print "<pre>";
print_r($array);
print "</pre>";
}
?>
</body>
</html>
Ausgabe:
2 Antworten
- du solltest im css die Spaltenbreite festlegen (width von th/td)
- du musst leere Zellen der Tabelle mit ausgeben
- du machst am besten pro Wert 2 Zellen, die du mit colspan=2 verbindest. Du musst vorher wissen, wie viele Ebenen du rechnest und brauchst doppelt so viele Zellen.
Für 3 Ebenen:
- Ebene: 2 Leerzellen, 1 Zelle mit colspan=2, 2 Leerzellen
- Ebene: 1 Leerzelle, 2 Zellen mit Werten, jeweils colspan=2, 1 Leerzelle
- Ebene: 3 Zellen mit colspan=2
Wenn n die Anzahl der Ebenen ist, brauchst du 2*n Tabellenzellen. Für die aktuelle Ebene i dann (n-i) Leerzellen, dann i Zellen mit Werten (je colspan=2), dann wieder (n-i) Leerzellen.
vertical ist falsche Richtung, wenn dann "text-align: center". Das hilft dir aber nur für den Text "in der Zelle" und ordnet nicht die Zellen um.
Berechne erstmal das Dreieck und schreibe dir dann eine Methode um das Dreieck auszugeben. Dabei musst du dann eben links noch die entsprechenden Spalten zeichnen, damit es wie ein Dreieck aussieht. Gerade gibst Du ja nur die rechte Seite aus.