PHP-Projekt

113Antworten
  1. #1
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard PHP-Projekt

    Hallo zusammen

    Ich möchte ein eigenes PHP-Projekt, an dem ich ein wenig lange habe, starten.

    Weiss jedoch nicht was ich machen könnte.

    Es sollte für Übungszwecke dienen.

    Kann mir jemand eine Aufgabe geben?

  2. #2
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Ich möchte ein eigenes PHP-Projekt, an dem ich ein wenig lange habe, starten.
    In dem Satz hast du einen grammatikalischen Fehler, der den Sinn des Satzes entstellt.

    Zitat Zitat von Uelik
    Kann mir jemand eine Aufgabe geben?
    Welcher Schwierigkeitsgrad? Irgendeine bestimmte Richtung?

  3. #3
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Ja sorry Spyx.

    In dem Satz meine ich, dass ich gerne ein wenig arbeiten möchte und nicht einfach schreiben schreiben schreiben, sondern auch überlegen und nachdenken sollte.

    Vom Schwierigkeitsgrad her bitte noch nicht zu schwer, da es auch zum Üben ist.

    Ich habe bisher kleinere Internetpräsentationen mit Logins, mit MySQL gemacht.

    Und danke für deine Antwort.

  4. #4
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Ja sorry Spyx.
    Kein Problem . Ich wollte dich nur darauf hinweisen, dass man nicht versteht, was du meinst.

    Zitat Zitat von Uelik
    Vom Schwierigkeitsgrad her bitte noch nicht zu schwer, da es auch zum Üben ist.

    Ich habe bisher kleinere Internetpräsentationen mit Logins, mit MySQL gemacht.
    Es sollte halt etwas sein, was dich auch interessiert. Da du dich auch mit MySQL auskennst, kann es auch ruhig etwas Interaktives sein. Zu schwer dürfte wohl kein Projekt sein. Es könnte bloß Projekte geben, die zu groß sind.

    Willst du eher theoretische Aufgaben oder doch Praktische? Wie wäre es mit einem eigenen kleinen CMS, ein einfaches Forum, eine persönliche anpassbare Startseite oder dein persönliches Cloud-Zuhause?

  5. #5
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Ja ein eigenes CMS wäre schon geil.
    Ich kann kein JavaScript, daher wird es auch schwer, so ein Editor zu erstellen wie hier im eForum mit den BB-Codes etc.

    Ich bin für alles offen, habe keine Ahnung was ich alles machen kann.

    Ich hatte mal die Idee ein eigenes kleines Browsergame zu erstellen.

  6. #6
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Ja ein eigenes CMS wäre schon geil.
    Ich kann kein JavaScript, daher wird es auch schwer, so ein Editor zu erstellen wie hier im eForum mit den BB-Codes etc.
    JavaScript kannst du lernen. Wenn du PHP kannst und OOP (objekt-orientierte Programmierung), dann stellt das keine große Herausforderung mehr da. Und für die BBCodes gibt es serverseitig z.B. folgenden Parser: HTML_BBCodeParser (auch in PHP-OOP geschrieben).
    Aber für ein eigenes kleines CMS brauchst du nicht unbedingt BBCodes. Das ist eine Funktionalität, die du auch noch später einbauen kannst, wenn du willst.

    Zitat Zitat von Uelik
    Ich hatte mal die Idee ein eigenes kleines Browsergame zu erstellen.
    Das würde ich erst einmal sein lassen. Ein Browsergame ist schon das "höchste" was man mit PHP erstellen kann. Dafür brauchst du eine Menge Wissen, Arbeit, Zeit, Kritikfähigkeit, Planung, Chefqualitäten (alleine ist solch ein Projekt zu groß) und Erfahrungen im Spieldesign (ein Spiel, das keinen Spaß macht, spielt keiner).

    Zitat Zitat von Uelik
    Ich bin für alles offen, habe keine Ahnung was ich alles machen kann.
    Machen kannst du alles . Die Frage ist nur, wie viel Geduld und Motivation du aufbringen willst und kannst.
    Schau dich ein bisschen in "deinem" Teil (die Webseiten, die du besuchst) des WWWs um. Was könntest du dort noch hinzufügen, was du (und eventuell Andere) noch brauchst. Dann schaust du, ob es so etwas schon gibt oder nicht.

    Ich kann dir jetzt auch einfach einen Haufen Aufgaben geben, die rein theoretischer Natur sind. Dann geht es einfach nur darum dein Algorithmus-Wissen & -Können zu testen & zu steigern.

  7. #7
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Ja dann gib mir bitte mal eine Aufgabe, die du dann bewerten kannst

    Das wird lustig

  8. #8
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    296 Aufgaben mit automatischem Lösungstester: Project Euler

    Das dürfte doch wohl erst einmal reichen, oder ?

  9. #9
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Nur so wenig?

  10. #10
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Das hat ja garnichts mit PHP-Projekten zu tun, nur mit der Problemlösung von diversen mathematischen Sachen.

  11. #11
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Das hat ja garnichts mit PHP-Projekten zu tun, nur mit der Problemlösung von diversen mathematischen Sachen.
    Das habe ich doch gesagt:
    Zitat Zitat von Spyx
    Ich kann dir jetzt auch einfach einen Haufen Aufgaben geben, die rein theoretischer Natur sind. Dann geht es einfach nur darum dein Algorithmus-Wissen & -Können zu testen & zu steigern.
    Wie wäre es mit Folgendem?
    Zitat Zitat von Spyx
    Schau dich ein bisschen in "deinem" Teil (die Webseiten, die du besuchst) des WWWs um. Was könntest du dort noch hinzufügen, was du (und eventuell Andere) noch brauchst. Dann schaust du, ob es so etwas schon gibt oder nicht.
    Oder willst du doch lieber eine einfache praktische Aufgabe, die ich persönlich bewerte?

  12. #12
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Nein habs begriffen

    Momentan noch kein grosses Projekt.

    Ich habe die 1. Frage bei Problem 1.

    If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

    Find the sum of all the multiples of 3 or 5 below 1000.
    Ich habe folgenden Code momentan:
    PHP-Code:
    <?
    $natural_numbers 
    = array();
    $count "0";
    while(
    $count "0" and $count "999") {
    //Zahlen welche durch drei und durch 5 teilbar sind in ein Array schreiben
        
    $durch_drei $count/3;
        
    $durch_fuenf $count/5;
        
        
    //Überprüfen ob Ergebnis eine natürliche Zahl ist?
    array_push($natural_numbers$count);
        
    $count++;
    }

    $summe "0";
    $zahl "0";
    $count1 count($natural_numbers);
    while(
    $zahl $count1) {
        
    //Aussummieren der Zahlen im Array
        
    $zahl_im_array $natural_numbers[$zahl];
        
    $summe $zahl_im_array+$summe;
        
        
    $zahl++;
    }
    print 
    '
    <html>
    <head>
    </head>
        <body>
        <b>Anzahl der durch 3 und 5 teilbaren Zahlen unter 1000:</b> '
    .$summe.'
        </body>
    </html>'
    ;

    ?>
    Wie kann ich jetzt überprüfen, ob es eine natürliche Zahl ist?

  13. #13
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Du kannst die Zahl in einer Variable sichern, danach runden und dann die Zahl in der Variable und die gerundete Variable vergleichen. Wenn beide gleich sind, dann ist es eine natürliche Zahl. Wenn es unterschiedliche Zahlen sind, dann hat die Zahl Nachkommastellen.

    Ansonsten habe ich schon zwei Anmerkungen:
    Warum verwendest du nicht die For-Schleife (For-Schleife@PHP.net)?
    Kennst du Modulo (Modulo@PHP.net)?

  14. #14
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Ja Modulo kenne ich nicht, was soll das sein?
    Mit for-schleifen kenne ich mich nicht aus. Habe es immer mit while gemacht.

    Schau dir mal den Code an.

    Ich habe noch herausgefunden das man mit folgendem Code eine Zahl überprüfen kann, ob sie ganz ist:
    Code:
    if(is_int($zahl))
    Code von mir:
    PHP-Code:
    <?
    $natural_numbers 
    = array();
    $count "0";
    while(
    $count "0" and $count "999") {
    //Zahlen welche durch drei und durch 5 teilbar sind in ein Array schreiben
        
    $durch_drei $count/3;
        
    $durch_fuenf $count/5;
        if(
    is_int($durch_drei) and is_int($durch_fuenf)) {
        
    //Überprüfen ob Ergebnis eine natürliche Zahl ist und push in array
    array_push($natural_numbers$count);
        }
    $count++;
    }

    $summe "0";
    $zahl "0";
    $count1 count($natural_numbers);
    while(
    $zahl $count1) {
        
    //Aussummieren der Zahlen im Array
        
    $zahl_im_array $natural_numbers[$zahl];
        
    $summe $zahl_im_array+$summe;
        
        
    $zahl++;
    }
    print 
    '
    <html>
    <head>
    </head>
        <body>
        <b>Anzahl der durch 3 und 5 teilbaren Zahlen unter 1000:</b> '
    .$summe.'
        </body>
    </html>'
    ;

    ?>
    Leider funktioniert es nicht :P Was ist da dran falsch?

  15. #15
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Leider funktioniert es nicht :P Was ist da dran falsch?
    In Zeile acht liegt der Fehler. Die Zahl muss durch drei oder durch fünf teilbar sein (ein oder, kein xor). Du hast und verwendet.

    Zitat Zitat von Uelik
    Ja Modulo kenne ich nicht, was soll das sein?
    Ich habe das Wort Modulo verlinkt. Der erste Absatz der Webseite dahinter erklärt Modulo gut.

    Zitat Zitat von Uelik
    Mit for-schleifen kenne ich mich nicht aus. Habe es immer mit while gemacht.
    Dann schau Dir doch einmal den Wikipedia-Artikel über For-Schleifen an und die PHP-Dokumentation dazu (habe ich oben verlinkt).

  16. #16
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Hallo Spyx

    Ich habe and durch or ersetzt.

    Nun kannst du mal selber sehen, was er ausgibt: https://uelikramer.ch/problem_1.php

    Code:
    PHP-Code:
       <?
    $natural_numbers 
    = array();
    $count "0";
    while(
    $count "0" and $count "999") {
    //Zahlen welche durch drei und durch 5 teilbar sind in ein Array schreiben
        
    $durch_drei $count/3;
        
    $durch_fuenf $count/5;
        if(
    is_int($durch_drei) or is_int($durch_fuenf)) {
        
    //Überprüfen ob Ergebnis eine natürliche Zahl ist und push in array
    array_push($natural_numbers$count);
        }
    $count++;
    }

    $summe "0";
    $zahl "0";
    $count1 count($natural_numbers);
    while(
    $zahl $count1) {
        
    //Aussummieren der Zahlen im Array
        
    $zahl_im_array $natural_numbers[$zahl];
        
    $summe $zahl_im_array+$summe;
        
        
    $zahl++;
    }
    print 
    '
    <html>
    <head>
    </head>
        <body>
        <b>Anzahl der durch 3 und 5 teilbaren Zahlen unter 1000:</b> '
    .$summe.'
        </body>
    </html>'
    ;

    ?>

  17. #17
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Diesmal liegt der Fehler in den Zeilen drei und vier. Du definierst $count als 0 und in die darauf folgende Schleife wird solange wiederholt, wie $count größer 0 und kleiner als 999 ist. Die Schleife wird noch vor dem ersten Start abgebrochen, da $count zu klein ist.

    Außerdem ist die maximale Größe der Schleife 999, also muss es heißen: $count kleiner 1000, da 999 durch drei teilbar und somit auch noch hinzu addiert werden muss.

  18. #18
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Oke bin jetzt bei Problem Nummer 2.

    PHP-Code:
    <?
    $max 
    "4000000"//Four Million

    $x1 "1";
    $x2 "2";

    zahlen();

    function 
    zahlen() {
        
    $x1 $x1+$x2;
        
    $x2 $x1+$x2;
        
        if(
    is_int($x1/2)) {
            
    $summe $summe+$x1;
        }
        if(
    is_int($x2/2)) {
            
    $summe $summe+$x2;
        }
    pruefen();
    }

    function 
    pruefen() {
    if(
    $summe>$max) {
    ausgeben();
    } else {
    zahlen();
    }
    }

    function 
    ausgeben() {
    print 
    $summe;
    }
    ?>
    Sollte doch klappen?

    Da kommt bei mir auf dem Server der Fehler:

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webmaster@uelikramer.ch and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

  19. #19
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Ich lasse das zweite Problem jetzt erst einmal liegen. Erst einmal eine Bewertung deines Skriptes. Als Vergleich kannst du dir ja mal mein Skript anschauen, was ich unten geschrieben habe.

    • Achte bitte genau auf deine Einrückungen. Das erleichtert die Lesbarkeit von deinem Skript.
    • Bringe deine Kommentare richtig an (an der richtigen Stelle). Die Kommentare sollten so geschrieben sein, dass sie jeder leicht versteht. Und sie sollten die Funktionsweise deines Programme gut und kurz erläutern.
    • Zahlen kann man auch ohne Gänsefüßchen (" & ') schreiben. So werden deine "Zahlen" erst einmal als Text gespeichert und dann für die weiteren Operationen intern umgewandelt. PHP ist eine der wenigen Sprachen, die einen so laschen Umgang mit Variablentypen hat. Und selbst dabei Grenzen - z.B. durch Skripte von anderen Programmieren, die genau auf die Variablentypen achten (aus Sicherheitsgründen).
    • Valides (x)HTML als Ausgabe gebührt eigentlich jedem, der sich Webmaster/-Designer o.Ä. schimpft.


    Da du die Aufgabe ja gelöst hast, bekommst du auch Zugriff auf die "offizielle Lösung". Da drin steht, dass diese Variante nicht sonderlich effektiv ist. Sie ist aber durchaus eine annehmbare Lösung. Vor allem ist sie relativ einfach - das gebietet z.B. das KISS-Prinzip ("Keep it simple and stupid."). Wenn du die ganze Sache mathematisch noch vereinfachen kannst, sodass die Lösung effektiver ist, dann solltest du das ganz immer gut dokumentieren, damit jeder deine "Lösung" versteht (auch du nach ein paar Wochen ).

    Und hier noch meine Variante:
    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
           "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="https://www.w3.org/1999/xhtml">
        <head>
            <title>Projekt Euler - Aufgabe 1</title>
            <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        </head>
        <body>
            <h1>Projekt Euler - Aufgabe 1</h1>
            <h2>Aufgabenstellung</h2>
            <p>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.</p>
            <p>Find the sum of all the multiples of 3 or 5 below 1000.</p>
            <h2>Lösung:</h2>
            <?php 
            
    /* Aufgabenstellung:
             * If we list all the natural numbers below 10 that are
             * multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these
             * multiples is 23.
             * 
             * Find the sum of all the multiples of 3 or 5 below 1000.
            */
            
            //die gesuchte Summe initialisieren
            
    $sum 0;
            
            
    //Für jede Zahl ab 1 kleiner 1000, da 1000 nicht mehr gefordert ist
            
    for ($i 1$i 1000$i++) {
                
    //wenn die Zahl modulo 3 oder 5 null ist (d.h. durch 3 oder 5 teilbar ist), ...
                
    if (($i == 0) or ($i == 0)) {
                    
    //... dann addiere sie zur gesuchten Summe
                    
    $sum += $i;
                }
            }
            
            
    //Die Lösung ausgeben
            
    echo '<p>Die Summe aller Mehrfachen von 3 oder 5 unter 1000 beträgt: ' $sum '.</p>';
            
            
    ?>
        </body>
    </html>
    Edit:
    Der PHP-Parser kommt nicht mit deinen verschachtelten Funktionsaufrufen und -definitionen klar. Eine Funktion muss erst komplett existieren, bevor die Möglichkeit besteht, dass man sie aufrufen kann. Deine beide Funktionen rufen sich aber gegenseitig auf und so können Beide nie vollständig definiert werden.

  20. #20
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Oke danke

    Vielleicht lasse ich das lieber mit dem Project Euler.

    Kannst du mir mal eine einfache praktische Aufgabe geben?

    Liebe Grüsse

  21. #21
    Avatar von Q-Max
    Q-Max ist offline

    Title
    Moderator
    seit
    19.05.2008
    Ort
    Laatzen bei Hannover
    Beiträge
    11.775

    Standard

    Zitat Zitat von Uelik
    Oke danke

    Vielleicht lasse ich das lieber mit dem Project Euler.

    Kannst du mir mal eine einfache praktische Aufgabe geben?

    Liebe Grüsse
    noch einfacher???

    dann bist ja wieder bei der Bildschirmausgabe von "Hallo Welt"

    LG

  22. #22
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von Uelik
    Vielleicht lasse ich das lieber mit dem Project Euler.
    Hey, nicht gleich aufgeben. Dann musst du halt einfach wieder zurück ans Zeichenbrett. Du wolltest doch Aufgaben, wo man nicht nur stupide programmieren muss, sondern zuerst Köpfchen einsetzen muss. Also schau dir Problem zwei noch einmal an und überlege, wie du es sonst noch lösen kannst.

    Zitat Zitat von Uelik
    Kannst du mir mal eine einfache praktische Aufgabe geben?
    Bist du dir sicher, dass du nicht doch noch ein paar theoretische Aufgaben willst, um dein Wissen mit PHP zu festigen, bevor du auf das Internet los gehst ?

  23. #23
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Oke Oke.
    Ich schau mirs heute Nacht nochmals an.
    Bis Morgen Abend will ich's haben :P

    Könnt ihr das einfach ohne gross zu überlegen?

  24. #24
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Ich hab's jetzt fast, denke ich:

    PHP-Code:
    <?
    /*
        *Aufgabe:
        *********
        *Each new term in the Fibonacci sequence is generated by adding the previous 
        *two terms. By starting with 1 and 2, the first 10 terms will be:
        *1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
        *
        *Find the sum of all the even-valued terms in the sequence which do not 
        *exceed four million.
    */
    $x1 "1"//Startzahl 1
    $x2 "2"//Startzahl 2

    $summe "2"//Startsumme

    function zahlen() {
        
    $x1 $x1+$x2;
        
    $x2 $x1+$x2;
        
        if(
    is_int($x1/2)) {
        
    $summe $summe+$x1;
        }
        if(
    is_int($x2/2)) {
        
    $summe $summe+$x2;
        }
    }

    function 
    ausgabe() {
    print 
    $summe;
    }

    if(
    $x2<="4000000") {
    zahlen();
    } else {
    ausgabe();
    }
    ?>
    Was ist hier noch falsch?

    Die Funktionen sind ja jetzt klar beendet und sollte eigentlich gehen, kommt jedoch nur ein blankes Fenster

  25. #25
    Avatar von dennis13393
    dennis13393 ist offline

    Title
    Benutzer
    seit
    12.02.2010
    Ort
    Wolfsburg
    Beiträge
    573

    Standard

    PHP-Code:
    print $summe
    wieso nicht echo?

    ich steig da bei deinem nicht durch, ich sehe richtige ansätze, aber teils unlogische sachen...
    aber sollte in etwa so sein:

    PHP-Code:
    $x1=1;
    $x2=2;
    while( 
    $x2<4000000 ){
    if(
    is_int($x2/2)){ $summe=$summe+$x2;} //x1 muss gar nicht... da es das vorherige x2 ist
    $x3=$x1+$x2// x3= zwischenvariable, zum beibahlten von x1 und x2
    $x1=$x2;
    $x2=$x3;
    }
    echo 
    $x3//zum testen
    echo $summe
    ausgabe von summe: 4613732

    hier überschreitet der letzte durchgang(also x2) die 4mil, aber es wird davor summiert und nicht danach
    und da $summe rund ist (mit 2 endet) liegt eine richtige vorgehensweise nahe

  26. #26
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Achherje, jetzt komme ich auch nach wenn ich die Lösung sehe.
    Vielen Dank

    Musstest du da lange überlegen?

  27. #27
    Avatar von dennis13393
    dennis13393 ist offline

    Title
    Benutzer
    seit
    12.02.2010
    Ort
    Wolfsburg
    Beiträge
    573

    Standard

    nein nicht wirklich ^^

    liegt aber daran, dass ich eine ähnliche aufgabe in einer klausur schon hatte und gewissen bausteine schon bei dir vorhanden waren

    am besten kommt man da drauf, wenn man am ende (oder auch zwischendurch) einige echos einbaut, um zu gucken, ob die zahlen auch zum ende hin z.B. stimmen

    programmiere mit php aber auch erst seit anfang des jahres, aber habe da schon viel übung drinnen, weil ich fast jede aufgabe von meinen mitschülern zumindest als ansatz vormachen musste

  28. #28
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    geil ^^

    Habe Probleme bei Problem 3:

    The prime factors of 13195 are 5, 7, 13 and 29.

    What is the largest prime factor of the number 600851475143 ?
    PHP-Code:
    <?
    $zahl 
    "600851475143";
    for(
    $i $zahl$i "2"$i--)
    {

    }
    ?>
    Wie kann ich jetzt überprüfen ob Zahl $i eine Primzahl ist?

    Liebe Grüsse

  29. #29
    Avatar von dennis13393
    dennis13393 ist offline

    Title
    Benutzer
    seit
    12.02.2010
    Ort
    Wolfsburg
    Beiträge
    573

    Standard

    mensch, das sind sachen ...
    zahlen am bestne ohne " " , die häckchen nur nutzen wenn du mal von der zahl die 1. stelle oder so brauchst, sonst besser nicht

    ansonstne scheint mir der ansatz richtig zu sein, fehlt nur noch eine kleinigkeit ^^
    dann machst du folgendes rein:
    PHP-Code:
       <?
    $zahl 
    600851475143;
    for(
    $i $zahl$i 2$i--)
    {
    if(
    is_int($zahl/$i) { // wenn es ganze zahl ist, dann ist es der teiler ;)
    $primefactor=$i// primfactor ist nun das jetzige i (das ganzzahlig die zahl teilen konnte)
    $i=1// for-schleife wird damit abgebrochen, da größter teiler gefunden
        

    }
    echo 
    "von der zahl".$zahl."ist der größte Teiler die".$primefactor;
    ?>
    ziemlich nette funktion das mit dem "is_int" werde ich ab jetzt oft gebrauchen ^^

    so willst du mal was zum denken?

    es sei ein 20x20 feld gegeben , enthalten sind tiernamen (kennst bestimmt solche buchstabenquadrate oder?) ob nun als textdatei oder auch per hand eingeben ist egal

    das quadrat soll für den user sichtbar dargestellt werden

    wenn ein tiername eingegeben wird, soll danach gesucht werden und ausgebenen werden, ob der tienrmae vorhanden ist oder nicht, wenn ja soll es auch farblich markiert werden

    nach möglichkeit sollen alle richtungen abgedeckt werden, kannst dich auch erstmal nur auf links nach rechts fokussieren

    soo, das ist eine nette aufgabe ^^ hat mir eine 1 gebraucht, hatten 2 wochen zeit, habe es aber innerhalb von ca 5-6 arbeitsstunden "vollbracht"

    als ersten tipp kriegst du "mehrdimensionales array"

    also $array[0][0]="A";, usw, was davon nun die x oder y achse im array ist, ist wurscht, musst dann nur damit weiter machen
    geh am besten so vor wie in der aufgabenstellung, also erstmal das array als quadrat sichtbar machen, dann das Suchen, dann die ausgabe ob vorhanden und dann das farbliche markieren
    also von der idee her, wie du es umsetzen willst

    hier das array:
    PHP-Code:
    $array[0][0]="A";
    $array[0][1]="M";
    $array[0][2]="S";
    $array[0][3]="E";
    $array[0][4]="L";
    $array[0][5]="L";
    $array[0][6]="E";
    $array[0][7]="R";
    $array[0][8]="O";
    $array[0][9]="F";
    $array[0][10]="M";
    $array[0][11]="R";
    $array[0][12]="U";
    $array[0][13]="W";
    $array[0][14]="D";
    $array[0][15]="N";
    $array[0][16]="A";
    $array[0][17]="B";
    $array[0][18]="O";
    $array[0][19]="A";
    $array[1][0]="L";
    $array[1][1]="E";
    $array[1][2]="G";
    $array[1][3]="I";
    $array[1][4]="U";
    $array[1][5]="H";
    $array[1][6]="E";
    $array[1][7]="G";
    $array[1][8]="N";
    $array[1][9]="A";
    $array[1][10]="L";
    $array[1][11]="H";
    $array[1][12]="C";
    $array[1][13]="S";
    $array[1][14]="N";
    $array[1][15]="A";
    $array[1][16]="N";
    $array[1][17]="D";
    $array[1][18]="U";
    $array[1][19]="L";
    $array[2][0]="B";
    $array[2][1]="O";
    $array[2][2]="C";
    $array[2][3]="K";
    $array[2][4]="B";
    $array[2][5]="U";
    $array[2][6]="E";
    $array[2][7]="N";
    $array[2][8]="A";
    $array[2][9]="Y";
    $array[2][10]="H";
    $array[2][11]="O";
    $array[2][12]="R";
    $array[2][13]="N";
    $array[2][14]="I";
    $array[2][15]="S";
    $array[2][16]="S";
    $array[2][17]="E";
    $array[2][18]="H";
    $array[2][19]="L";
    $array[3][0]="N";
    $array[3][1]="H";
    $array[3][2]="A";
    $array[3][3]="H";
    $array[3][4]="E";
    $array[3][5]="H";
    $array[3][6]="S";
    $array[3][7]="U";
    $array[3][8]="A";
    $array[3][9]="L";
    $array[3][10]="U";
    $array[3][11]="C";
    $array[3][12]="H";
    $array[3][13]="S";
    $array[3][14]="T";
    $array[3][15]="S";
    $array[3][16]="R";
    $array[3][17]="L";
    $array[3][18]="U";
    $array[3][19]="I";
    $array[4][0]="R";
    $array[4][1]="P";
    $array[4][2]="N";
    $array[4][3]="E";
    $array[4][4]="Z";
    $array[4][5]="N";
    $array[4][6]="A";
    $array[4][7]="W";
    $array[4][8]="R";
    $array[4][9]="E";
    $array[4][10]="H";
    $array[4][11]="D";
    $array[4][12]="R";
    $array[4][13]="A";
    $array[4][14]="P";
    $array[4][15]="O";
    $array[4][16]="E";
    $array[4][17]="L";
    $array[4][18]="R";
    $array[4][19]="G";
    $array[5][0]="E";
    $array[5][1]="A";
    $array[5][2]="I";
    $array[5][3]="S";
    $array[5][4]="R";
    $array[5][5]="E";
    $array[5][6]="W";
    $array[5][7]="I";
    $array[5][8]="E";
    $array[5][9]="S";
    $array[5][10]="E";
    $array[5][11]="L";
    $array[5][12]="R";
    $array[5][13]="E";
    $array[5][14]="C";
    $array[5][15]="H";
    $array[5][16]="L";
    $array[5][17]="I";
    $array[5][18]="U";
    $array[5][19]="A";
    $array[6][0]="P";
    $array[6][1]="V";
    $array[6][2]="V";
    $array[6][3]="C";
    $array[6][4]="E";
    $array[6][5]="T";
    $array[6][6]="R";
    $array[6][7]="A";
    $array[6][8]="D";
    $array[6][9]="W";
    $array[6][10]="A";
    $array[6][11]="P";
    $array[6][12]="C";
    $array[6][13]="H";
    $array[6][14]="C";
    $array[6][15]="E";
    $array[6][16]="S";
    $array[6][17]="R";
    $array[6][18]="G";
    $array[6][19]="T";
    $array[7][0]="I";
    $array[7][1]="I";
    $array[7][2]="G";
    $array[7][3]="H";
    $array[7][4]="T";
    $array[7][5]="S";
    $array[7][6]="O";
    $array[7][7]="B";
    $array[7][8]="N";
    $array[7][9]="A";
    $array[7][10]="L";
    $array[7][11]="H";
    $array[7][12]="S";
    $array[7][13]="S";
    $array[7][14]="O";
    $array[7][15]="C";
    $array[7][16]="T";
    $array[7][17]="G";
    $array[7][18]="N";
    $array[7][19]="O";
    $array[8][0]="V";
    $array[8][1]="A";
    $array[8][2]="N";
    $array[8][3]="W";
    $array[8][4]="T";
    $array[8][5]="U";
    $array[8][6]="D";
    $array[8][7]="A";
    $array[8][8]="A";
    $array[8][9]="P";
    $array[8][10]="T";
    $array[8][11]="E";
    $array[8][12]="U";
    $array[8][13]="Z";
    $array[8][14]="Y";
    $array[8][15]="H";
    $array[8][16]="E";
    $array[8][17]="B";
    $array[8][18]="A";
    $array[8][19]="R";
    $array[9][0]="M";
    $array[9][1]="N";
    $array[9][2]="I";
    $array[9][3]="A";
    $array[9][4]="A";
    $array[9][5]="G";
    $array[9][6]="N";
    $array[9][7]="R";
    $array[9][8]="R";
    $array[9][9]="M";
    $array[9][10]="I";
    $array[9][11]="M";
    $array[9][12]="S";
    $array[9][13]="I";
    $array[9][14]="O";
    $array[9][15]="T";
    $array[9][16]="R";
    $array[9][17]="L";
    $array[9][18]="K";
    $array[9][19]="H";
    $array[10][0]="M";
    $array[10][1]="I";
    $array[10][2]="P";
    $array[10][3]="N";
    $array[10][4]="N";
    $array[10][5]="N";
    $array[10][6]="O";
    $array[10][7]="S";
    $array[10][8]="A";
    $array[10][9]="I";
    $array[10][10]="L";
    $array[10][11]="E";
    $array[10][12]="L";
    $array[10][13]="E";
    $array[10][14]="T";
    $array[10][15]="T";
    $array[10][16]="A";
    $array[10][17]="R";
    $array[10][18]="C";
    $array[10][19]="S";
    $array[11][0]="E";
    $array[11][1]="U";
    $array[11][2]="L";
    $array[11][3]="R";
    $array[11][4]="S";
    $array[11][5]="A";
    $array[11][6]="K";
    $array[11][7]="C";
    $array[11][8]="W";
    $array[11][9]="H";
    $array[11][10]="T";
    $array[11][11]="T";
    $array[11][12]="N";
    $array[11][13]="G";
    $array[11][14]="E";
    $array[11][15]="M";
    $array[11][16]="A";
    $array[11][17]="S";
    $array[11][18]="U";
    $array[11][19]="H";
    $array[12][0]="R";
    $array[12][1]="B";
    $array[12][2]="W";
    $array[12][3]="B";
    $array[12][4]="E";
    $array[12][5]="L";
    $array[12][6]="L";
    $array[12][7]="H";
    $array[12][8]="H";
    $array[12][9]="C";
    $array[12][10]="I";
    $array[12][11]="A";
    $array[12][12]="N";
    $array[12][13]="E";
    $array[12][14]="A";
    $array[12][15]="N";
    $array[12][16]="I";
    $array[12][17]="A";
    $array[12][18]="K";
    $array[12][19]="C";
    $array[13][0]="E";
    $array[13][1]="B";
    $array[13][2]="B";
    $array[13][3]="E";
    $array[13][4]="E";
    $array[13][5]="I";
    $array[13][6]="E";
    $array[13][7]="E";
    $array[13][8]="E";
    $array[13][9]="S";
    $array[13][10]="S";
    $array[13][11]="U";
    $array[13][12]="T";
    $array[13][13]="O";
    $array[13][14]="I";
    $array[13][15]="F";
    $array[13][16]="R";
    $array[13][17]="N";
    $array[13][18]="C";
    $array[13][19]="V";
    $array[14][0]="I";
    $array[14][1]="E";
    $array[14][2]="L";
    $array[14][3]="O";
    $array[14][4]="F";
    $array[14][5]="T";
    $array[14][6]="E";
    $array[14][7]="W";
    $array[14][8]="D";
    $array[14][9]="H";
    $array[14][10]="E";
    $array[14][11]="N";
    $array[14][12]="B";
    $array[14][13]="C";
    $array[14][14]="I";
    $array[14][15]="B";
    $array[14][16]="E";
    $array[14][17]="T";
    $array[14][18]="V";
    $array[14][19]="F";
    $array[15][0]="H";
    $array[15][1]="V";
    $array[15][2]="M";
    $array[15][3]="L";
    $array[15][4]="R";
    $array[15][5]="F";
    $array[15][6]="O";
    $array[15][7]="G";
    $array[15][8]="O";
    $array[15][9]="V";
    $array[15][10]="E";
    $array[15][11]="R";
    $array[15][12]="H";
    $array[15][13]="A";
    $array[15][14]="O";
    $array[15][15]="P";
    $array[15][16]="D";
    $array[15][17]="I";
    $array[15][18]="K";
    $array[15][19]="A";
    $array[16][0]="E";
    $array[16][1]="L";
    $array[16][2]="E";
    $array[16][3]="E";
    $array[16][4]="L";
    $array[16][5]="L";
    $array[16][6]="A";
    $array[16][7]="R";
    $array[16][8]="A";
    $array[16][9]="U";
    $array[16][10]="P";
    $array[16][11]="E";
    $array[16][12]="I";
    $array[16][13]="K";
    $array[16][14]="R";
    $array[16][15]="F";
    $array[16][16]="R";
    $array[16][17]="L";
    $array[16][18]="R";
    $array[16][19]="H";
    $array[17][0]="R";
    $array[17][1]="E";
    $array[17][2]="G";
    $array[17][3]="E";
    $array[17][4]="L";
    $array[17][5]="E";
    $array[17][6]="N";
    $array[17][7]="M";
    $array[17][8]="K";
    $array[17][9]="N";
    $array[17][10]="W";
    $array[17][11]="E";
    $array[17][12]="S";
    $array[17][13]="P";
    $array[17][14]="E";
    $array[17][15]="A";
    $array[17][16]="A";
    $array[17][17]="O";
    $array[17][18]="A";
    $array[17][19]="C";
    $array[18][0]="R";
    $array[18][1]="I";
    $array[18][2]="N";
    $array[18][3]="D";
    $array[18][4]="E";
    $array[18][5]="B";
    $array[18][6]="U";
    $array[18][7]="A";
    $array[18][8]="T";
    $array[18][9]="E";
    $array[18][10]="S";
    $array[18][11]="I";
    $array[18][12]="E";
    $array[18][13]="M";
    $array[18][14]="A";
    $array[18][15]="U";
    $array[18][16]="M";
    $array[18][17]="P";
    $array[18][18]="C";
    $array[18][19]="S";
    $array[19][0]="T";
    $array[19][1]="F";
    $array[19][2]="L";
    $array[19][3]="O";
    $array[19][4]="W";
    $array[19][5]="P";
    $array[19][6]="A";
    $array[19][7]="N";
    $array[19][8]="T";
    $array[19][9]="H";
    $array[19][10]="E";
    $array[19][11]="R";
    $array[19][12]="N";
    $array[19][13]="R";
    $array[19][14]="E";
    $array[19][15]="T";
    $array[19][16]="S";
    $array[19][17]="E";
    $array[19][18]="E";
    $array[19][19]="S"

  30. #30
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Wenn ich Zeit habe werde ich das versuchen

    Bin jetzt noch an den 269 Aufgaben

    Liebe Grüsse

    Danke für deine Hilfe :P Bin einfach zu blöde für das

  31. #31
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Info
    Der Code von dir funktioniert nicht :P

  32. #32
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    @dennis13393
    Eine kleine Bitte: Schreibe hier bitte nicht die fertigen Skripte für Uelik. Es bringt ihm ja nicht sonderlich viel, wenn er die komplette Lösung hat. Ich persönlich finde, dass man besser mit Tipps, Links und eventuell Pseudocode helfen kann.

    @Uelik
    Was macht denn eine Primzahl aus? Und dann schau mal, ob du dir eine Funktion schreiben kannst, die eine Zahl daraufhin überprüft, ob sie eine Primzahl ist oder nicht.

    Edit:
    Ich muss noch anmerken, dass die Zahl 600851475143 kein Integer mehr ist, sondern eine Fließkommazahl. Somit funktioniert das Konzept mit is_int nicht mehr.

    Wenn man wissen will, ob eine Fließkommazahl durch eine andere Fließkommazahl ohne Rest teilbar ist, dann kann man folgendes verwenden:
    PHP-Code:
    if (fmod($zahl$teiler) == 0) {
        
    /* tue, wenn die Zahl durch Teiler ohne Rest teilbar ist */


  33. #33
    Avatar von dennis13393
    dennis13393 ist offline

    Title
    Benutzer
    seit
    12.02.2010
    Ort
    Wolfsburg
    Beiträge
    573

    Standard

    hmm ok, stimmt sollte lieber nicht gleich die lösung sagen

    wieso ist es denn nun eine fließkommazahl? hat der integer dort schon seine maximale zahl überschritten oder wie?

    und wie sieht's als string aus? ... aufgaben interessieren mich auch brennend ^^
    probiere mich da jetzt auch mal dran...

    @ uelik, habe den fehler gefunden ^^ aber poste nicht korrigiert, da du es am besten selbst rausfinden solltest


    ach, ich habe das glaube ich falsch verstanden... also die faktoren die durch die zahl teilbar sind, sollen nur primzahlen sein? hmm... ok

    bin mitlerweile bei aufgabe 7, denke das schwerste am ganzen ist die optimierung... denn wenn das ganze mehr als 60sek dauert, dann ist bei php ende...
    also die lösung muss möglichst schnell errechnet werden, musste ich bei einer aufgabe hauptsächlich über die optimierung anchdenken, da es 60+sek gedauert hat, bin durch paar kleinigkeiten auf <1sek gekommen...

    jetzt muss ich die 10001. primzahl rausfinden, 1000. kriege ich inerhalb von ca 5sek hin, 10001 dauert mehr als 60 sek....

  34. #34
    Avatar von Spyx
    Spyx ist offline

    Title
    Moderator
    seit
    21.08.2006
    Beiträge
    9.155

    Standard

    Zitat Zitat von dennis13393
    hmm ok, stimmt sollte lieber nicht gleich die lösung sagen
    Ist nicht böse gemeint, aber Uelik will ja etwas lernen.

    Zitat Zitat von dennis13393
    wieso ist es denn nun eine fließkommazahl? hat der integer dort schon seine maximale zahl überschritten oder wie?
    Jep, die Zahl ist größer als 2.147.483.648 (2^31 - 1 Bit für das Vorzeichen). Dann muss man in PHP entweder auf Fließkommazahlen zurückgreifen oder auf Strings. Wobei man dann eine Bibliothek (selbst-geschrieben oder im Internet gefunden) nutzen muss, die mathematische Funktionen bei Strings anwendet.

    Zitat Zitat von dennis13393
    jetzt muss ich die 10001. primzahl rausfinden, 1000. kriege ich inerhalb von ca 5sek hin, 10001 dauert mehr als 60 sek....
    Sieb des Eratosthenes ? Wikipedia

  35. #35
    Avatar von Uelik
    Uelik ist offline
    Themen Starter

    Title
    Benutzer
    seit
    13.07.2009
    Ort
    3612 Steffisburg - Schweiz
    Beiträge
    713

    Standard

    Primzahl
    Eine Primzahl ist nur durch 1 und durch sich selbst teilbar.

    Und ich habe keine Ahnung wie ich das in PHP machen kann

+ Antworten

Ähnliche Themen

  1. Wechselplatten Projekt

    Von Hrvat77 im Forum Festplatten und Laufwerke
    Antworten: 2
    Letzter Beitrag: 23.11.2014, 21:42
  2. Projekt Lagersystem .

    Von Adonis87 im Forum Off-Topic
    Antworten: 12
    Letzter Beitrag: 25.07.2012, 08:09
  3. PROJEKT: Bamboo PC

    Von MacBemme im Forum Modding und Optimierungen
    Antworten: 25
    Letzter Beitrag: 26.11.2009, 21:28
  4. Erstes VB6 Projekt

    Von David im Forum Off-Topic
    Antworten: 5
    Letzter Beitrag: 01.06.2008, 15:19
  5. PC-Projekt-Forum

    Von BlauTiger im Forum Off-Topic
    Antworten: 11
    Letzter Beitrag: 30.01.2007, 13:32
Diese Seite benutzt Cookies Durch die weitere Nutzung der Seite stimmen Sie der Verwendung von Cookies zu. Infos zum Datenschutz