Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle erstellen u. füllen mit einstellbarer Spaltenanzahl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle erstellen u. füllen mit einstellbarer Spaltenanzahl

    Guten Tag
    und zwar möchte ich mir ein PHP Script schreiben, mit dem ich mir eine Funktionstabelle für SPS erstellen kann. Dabei soll man anfangs eingeben, wie viel Eingangsvariabeln man hat. Das Quadrat dessen bestimmt, wie viel Zeilen man später hat.
    Ein Beispiel:



    Hier sieht man, dass man rechts mit dem ersten anfängt und sich dann von rechts nach außen arbeitet.
    Dabei soll bei E1.0 die Spalte mit 1..0..1..0..1 usw. gefüllt werden. Die bei E2.0 aber 1..1..0..0..1..1..0..0 usw. die dritte soll dann mit vier einsen und vier nullen . Sprich immer das doppelte des vorangehenden. Ich habe mir vorgestellt das in einen zweidimensionalen Array abzuspeichern und diese dann später auszugeben. Mein Versuch bis jetzt sieht so aus:

    PHP-Code:
    <html>
    <head>
        <title> Funktionstabelle </title>
    </head>
        
            <form action="Funktionstabelle.php" method="get">

            <input type="text" size="5" name="variabeln">
            <input type="submit" value="Funktionstabelle erstellen">

            </form>

    <?php
        
        
    if ((isset($_GET['variabeln'])) && $_GET['variabeln'] <> "")
        {
            
    $eingangsvariabeln $_GET['variabeln'];

            
    $zeilen pow($eingangsvariabeln2);
            
            for (
    $i=$eingangsvariabeln$i 0$i--) { 
                
                
    $tabelle[$i][0] = "E".$i.".0";;
                echo 
    "<br>".$tabelle[$i][0];

                for (
    $j=$zeilen$j $j--) { 
                    
    $tabelle[$i][$j] = 0;
                    
                }


            }
            

        }
        else
        {
            echo 
    "<b>Fehler:</b> Es wurde keine Eingabe get&auml;tigt!";
        }

    ?>

    </html>
    Ich habe mich noch nicht wirklich daran gewagt, dass das Script diese Automatisierung macht mit den doppelten Anzahl des vorangehenden, da ich alleine damit Probleme habe, diese Verschachtelungen zu organisieren.

    Ich hoffe Sie können mir eventuell dabei helfen!

  • #2
    Die Funktionstabellen sind auch als Wahrheitstabellen bekannt.

    Kommentar


    • #3
      Gehe ich recht in der Annahme das das nicht mit beliebigen Anzahlen an Variablen funktionieren kann? Wie sähe denn das Beispiel mit 3 Variablen aus?

      Kommentar


      • #4
        Die Anzahl der Eingangsvariabeln, sprich der Spalten, lege ich ja vorher fest. Sprich ich gebe ein wie viele Eingangsvariabeln die Wahrheitstabelle hat und bestimme damit gleichzeitig wie viele Spalten diese hat und somit wie viele Möglichkeiten (Zeilen).

        Beispiel:

        Ich gebe in das Textfeld ein, dass ich 5 Eingangsvariabeln habe.

        Dann würde die Tabelle 5 Spalten besitzen und 25 Zeilen, da 5^2 Die Möglichkeiten angibt. Dann soll das PHP Script schlicht weg in der ersten Spalten 0.1.0.1 usw. schreiben und in der zweiten Spalte soll es dann das doppelte des davorigen ausgeben also: 1.1.0.0.1.1 usw. und bei der dritten spalte wieder das doppelte, also 4 einsen, 4 nullen, 4 einsen, 4 nullen. Usw. bis alle Eingangsvariabeln, sprich Spalten, befüllt sind.

        Kommentar


        • #5
          Mit 3 Variabeln sieht es so aus:



          In der ersten Spalte von Links müsste es aber S3 heißen, ein kleiner Fehler von mir.

          Kommentar


          • #6
            Das ist ne Wahrheitstabelle, die 2 mal alle Möglichkeiten wiedergibt?!

            Kommentar


            • #7
              Wieso sind es da denn 12 Spalten? denn 3^2 = 9.

              Edit:
              Wenn also 9 Zeilen rauskommen müssten, dann könntest du mal folgendes probieren. Ist aber ungetestet.
              PHP-Code:
              <?php

              $maxVar 
              3;

              $countVar 1;
              for(
              $a 1$a $maxVar$a++)
              {
              $countVar $countVar 2;}

              $tableArr = array();
              $case 1;
              $id 0;

              for(
              $a 0$a $maxVar$a++)
              {
              $tableArr[] = array();

                  for(
              $b 0$b < ($maxVar $maxVar); $b++)
                  {
                      if(
              $case == 1)
                      {
              $tableArr[$a][] = 1;$id++;}
                      else{
              $tableArr[$a][] = 0;$id++;}
                          if(
              $id == $countVar AND $case == 1)
                          {
              $case 0$id 0;}elseif($id == $countVar AND $case == 0)
                          {
              $case 1$id 0;}
                  }
              $countVar $countVar 2;
              $id 0;
              $case 1;
              }
              print_r($tableArr);


              ?>

              Kommentar


              • #8
                Es gibt eine weitere Variabel, die das Script aber nicht berücksichtigen soll. Die Ausgangsvariabel.
                Die richtet sich aber wiederum nach der Formel, die aber für das erstellen der gebrauchten Tabellen nicht von belang ist.
                Diese Ausgangsvariabel wird ganz rechts geschrieben.

                Wenn ich jetzt nach der Formel S1 && S2 && S3 gehen würde, sehe das so aus (Ist ein kleiner Fehler drinne, nur die erste Spalte ist auf 1):



                Das ist aber wirklich für das Script nicht von belang.
                Es soll einfach erste spalte von rechts die eine Reihenfolge machen, dann die veränderte Reihenfolge auf die zweite spalte von links usw.

                EDIT:

                Ja, stimmt. Das muss natürlich auch geändert werden!

                Kommentar


                • #9
                  Zitat von ChrisB. Beitrag anzeigen
                  Es gibt eine weitere Variabel, die das Script aber nicht berücksichtigen soll. Die Ausgangsvariabel.
                  Die richtet sich aber wiederum nach der Formel, die aber für das erstellen der gebrauchten Tabellen nicht von belang ist.
                  Diese Ausgangsvariabel wird ganz rechts geschrieben.

                  Wenn ich jetzt nach der Formel S1 && S2 && S3 gehen würde, sehe das so aus (Ist ein kleiner Fehler drinne, nur die erste Spalte ist auf 1):

                  http://img3.fotos-hochladen.net/uplo...sijrz1v6oe.jpg

                  Das ist aber wirklich für das Script nicht von belang.
                  Es soll einfach erste spalte von rechts die eine Reihenfolge machen, dann die veränderte Reihenfolge auf die zweite spalte von links usw.

                  EDIT:

                  Ja, stimmt. Das muss natürlich auch geändert werden!

                  Kommentar


                  • #10
                    Perfekt funktioniert super! Kann man so ein Array auch passend in ein Excel format schreiben lassen?

                    Kommentar


                    • #11
                      Klar mach einfach ein implode() mit ";" als Trennzeichen für die 2. Ebene und füge nach jeder Hauptebene ein "/n" ein.
                      Dann kannst du das ganze als CSV Datei speichern lassen und gut ist.

                      Kommentar


                      • #12
                        Zitat von ChrisB. Beitrag anzeigen
                        Beispiel:

                        Ich gebe in das Textfeld ein, dass ich 5 Eingangsvariabeln habe.

                        Dann würde die Tabelle 5 Spalten besitzen und 25 Zeilen, da 5^2 Die Möglichkeiten angibt.
                        Kleiner aber entscheidender Unterschied: es sind (Anzahl Werte)^(Anzahl Spalten) statt (Anzahl Spalten)^(Anzahl Werte) Möglichkeiten.

                        Kommentar

                        Lädt...
                        X