kostenloser Webspace werbefrei: lima-city


roulette

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    PHP-Anfänger fragt:

    Ich habe jetzt bspw. eine Liste. Und jetzt will ich ein kleines programm schreibe in PHP, dass es dann eine zufällige Zahl nimmt, wenn man auf einen button drückt.
    Wie soll der PHP skript aussehen?? Und mit welchem programm muss ich die liste machen? Gehts auch wenn ich die Liste ein word dokument ist??

    bsp: Wenn ich meine Klassenliste habe, will ich dass der rechner eine zufällige person nimmt! :biggrin::biggrin:

    Und ihr kennt doch sicher das spiel, wo der computer eine zufällige zahl nimmt z.b. zwischen 1 und 100. Wie kann ich das programm so umschreiben, dass er nur eine ungerade bzw. gerade zahl zwischen 1 und 100 nimmt??

    Ich hoffe ihr habt beide fragen verstanden, und könnt mir helfen.


    Danke schon im voraus
    mfg
    xasa$$$
    :cool:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. als 1.es öffnest du die Datei in der die liste drin ist

    2.mit rand(1,100); generierst du eine zufällige zahl zwischen 1und 100

    3.dann einfach aus der lsite raussuchen (wenn d z.b nach id sotiert hast)

    1|Müller Max|müller@max.at
    2|Maxi Müller|müller@maxi.at

    z.b !

    dann rufst du 2 auf mit der generierten zahl
  4. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    und wie geht das, wenn er nur ungerade zahlen zwischen 1 und 100 wählen soll??
    und wie, wenn er nur gerade zahlen zwischen 1 und 100 wählen soll??
  5. zwiebeldoener

    Moderator Kostenloser Webspace von zwiebeldoener

    zwiebeldoener hat kostenlosen Webspace.

    Bin selber noch ganz am Anfang, aber das zweite Problem könntest du mit einem if-Konstrukt lösen.

    Ungerade
    <?php
    if ($zufallszahl % 2) {
    $zufallszahl ++;
    }
    ?>


    Damit wird halt jede gerade Zufallszahl inkrementiert (um 1 erhöht).


    Für nur gerade Zahlen:
    <?php
    if ($zufallszahl !% 2) {
    $zufallszahl ++;
    }
    ?>


    Jede ungerade Zahl wird inkrementiert.

    Wie gesagt bin ich noch Anfänger und weiß nicht ob es noch leichter ginge ;)

    Beitrag geaendert: 15.3.2007 21:54:43 von zwiebeldoener

    Beitrag geaendert: 15.3.2007 21:55:20 von zwiebeldoener
  6. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    was ist das für ein zeichen vor der 2???
  7. Das %-Zeichen berechnet den Restwert bei der Dividion. Bei geraden Zahlen durch 2 ist der also 0, wodurch die Bedingung also nicht erfüllt ist.
    Also wenn ich mich nicht irre müsste man die beiden Möglichkeiten austauschen, also die erste für gerade Zahlen? Ich habe aber schon länger nicht mehr mit PHP gespielt, also keine Garantie.

    Und !% war mir auch unbekannt. Geht das?
  8. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    hey zwiebedoener

    ich habe nochmal nachgeschaut. am besten ich zeige dir ein beispiel:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest==1)
    
    {
         echo "die Zahl ist ungerade"
    }
    
    if (rest==0)
    
    {
         echo "die zahl ist gerade"
    }
    
    ?>


    das prozentzeichen rechnet den rest aus.
    das bedeutet wenn $zahl eine ungerade zahl wäre, wäre der rest eins und somit schriebt der computer, dass es ungerade ist und der rest für die gerade zahl wäre ja 0, also schreibt es dann, dass es gerade ist, weil der rest bei einer geraden zahl, wäre ja 0.
  9. s***h


    hey zwiebedoener

    ich habe nochmal nachgeschaut. am besten ich zeige dir ein beispiel:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest==1)
    
    {
         echo "die Zahl ist ungerade"
    }
    
    if (rest==0)
    
    {
         echo "die zahl ist gerade"
    }
    
    ?>


    das prozentzeichen rechnet den rest aus.
    das bedeutet wenn $zahl eine ungerade zahl wäre, wäre der rest eins und somit schriebt der computer, dass es ungerade ist und der rest für die gerade zahl wäre ja 0, also schreibt es dann, dass es gerade ist, weil der rest bei einer geraden zahl, wäre ja 0.


    Nene, das ist so falsch..

    1. Du hast das $ bei der zweiten if-Abfrage vergessen
    2. Du hast das Semikolon nach echo vergessen:
    <?php echo "bla"; ?>

    (3. Brauchst du die zweite if-Abfrage nicht...)

    So ist es richtig:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest == 0)
    
    {
         echo "die Zahl ist gerade";
    }
    
    else
    
    {
         echo "die zahl ist ungerade";
    }
    
    ?>



    Beitrag geaendert: 16.3.2007 19:44:11 von sesch
  10. Gerade/Ungerade Zahl:

    Irgendwie schwebt mir da eine Definition vor (von der ich mal gelesen habe), die gerade und ungerade Zahlen darstellt. Sowas in der Art von:
    gerade Zahl: 2k (k ist eine beliebige natürliche Zahl);
    ungerade Zahl: 2k+1 (k ist eine beliebige natürliche Zahl);

    Angepasst an das Problem sieht ein einfaches PHP-Script so aus:
    $k = mt_rand(1,50); // k von 1 bis 50 
    printf('gerade Zahl: %s<br />', $k + $k);
    printf('ungerade Zahl: %s<br />', $k + $k - 1);

    Das dürfte schneller und einfacher sein, als mit dem Modulo-Divisor zu spielen ...

    ==============
    Word-Dateien kann man mit PHP nicht sinnvoll einlesen. Es sei denn, du speicherst sie in Word als ".txt"- oder ".csv"-Dateien. Diese kann ein PHP-Script relativ einfach verarbeiten.

    Nehmen wir mal an, folgende Liste läge als TXT-Datei vor:

    Heinz
    Franz
    Fritz
    Klaus
    Karl

    Das speichern wir als "liste.txt" im gleichen Verzeichnis, in dem auch unser folgendes PHP-Script liegt.

    Die kann man in PHP so einlesen:
    // Datei zum Lesen öffnen
    $datei = 'liste.txt';
    if (!$fh = fopen($datei)) {
      exit(sprintf('Konnte Datei "%s" nicht öffnen!', realpath($datei)));
    }
    
    // Liste erstellen
    $liste = array ();
    while($zeile = fgets($datei)) {
      $liste[] = trim($zeile);
    }
    // Datei wieder zumachen
    close($fh);
    
    // jetzt kommt der interessantee Teil
    
    $max = count($liste) - 1;
    
    printf('Zufällige Auswahl: "%s"<br />', $liste[mt_rand(0, $max)]);


    ... und wenn ich jetzt keine Schusselfehler eingebaut habe, funktioniert das sogar. :wink:


    Beitrag geaendert: 16.3.2007 19:59:24 von alopex
  11. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    das kommt mir ein bisschen komplizierter vor. Jenachdem hängt es immer noch vom Geschmack ab!!
  12. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.



    sesch schrieb:

    hey zwiebedoener

    ich habe nochmal nachgeschaut. am besten ich zeige dir ein beispiel:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest==1)
    
    {
         echo 'die Zahl ist ungerade'
    }
    
    if (rest==0)
    
    {
         echo 'die zahl ist gerade'
    }
    
    ?>


    das prozentzeichen rechnet den rest aus.
    das bedeutet wenn $zahl eine ungerade zahl wäre, wäre der rest eins und somit schriebt der computer, dass es ungerade ist und der rest für die gerade zahl wäre ja 0, also schreibt es dann, dass es gerade ist, weil der rest bei einer geraden zahl, wäre ja 0.


    Nene, das ist so falsch..

    1. Du hast das $ bei der zweiten if-Abfrage vergessen
    2. Du hast das Semikolon nach echo vergessen:
    <?php echo 'bla'; ?>

    (3. Brauchst du die zweite if-Abfrage nicht...)

    So ist es richtig:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest == 0)
    
    {
         echo 'die Zahl ist gerade';
    }
    
    else
    
    {
         echo 'die zahl ist ungerade';
    }
    
    ?>



    Beitrag geaendert: 16.3.2007 19:44:11 von sesch


    sesch schrieb:

    hey zwiebedoener

    ich habe nochmal nachgeschaut. am besten ich zeige dir ein beispiel:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest==1)
    
    {
         echo 'die Zahl ist ungerade'
    }
    
    if (rest==0)
    
    {
         echo 'die zahl ist gerade'
    }
    
    ?>


    das prozentzeichen rechnet den rest aus.
    das bedeutet wenn $zahl eine ungerade zahl wäre, wäre der rest eins und somit schriebt der computer, dass es ungerade ist und der rest für die gerade zahl wäre ja 0, also schreibt es dann, dass es gerade ist, weil der rest bei einer geraden zahl, wäre ja 0.


    Nene, das ist so falsch..

    1. Du hast das $ bei der zweiten if-Abfrage vergessen
    2. Du hast das Semikolon nach echo vergessen:
    <?php echo 'bla'; ?>

    (3. Brauchst du die zweite if-Abfrage nicht...)

    So ist es richtig:
    <?php
    
    $zahl=rand(1,100);
    $rest=$zahl % 2;
    
    if ($rest == 0)
    
    {
         echo 'die Zahl ist gerade';
    }
    
    else
    
    {
         echo 'die zahl ist ungerade';
    }
    
    ?>






    Danke, war nur schreibfehler
  13. s***h

    Wenn du den Modulo-Divisor verwenden willst, kann man das noch verkürzen:

    <?php
    
    $zahl=rand(1,100);
    
    if ($zahl % 2)
    
    {
    echo 'die Zahl ist ungerade';
    } else {
    echo 'die zahl ist gerade';
    }
    
    ?>
  14. Autor dieses Themas

    xasa

    xasa hat kostenlosen Webspace.

    das geht doch nicht. denn, du hast ihn den befehl gegeben den rest auszurechnen.
    Und jetzt, was bringt dir dann der if befehl. er wird beide antworten schreiben.
    du musst es abändern:
    <?php
    if ($zahl % 2==1)
    {
    echo "zahl ist ungerade";
    }
    else
    {
    echo "zahl ist gerade";
    }
    ?>
  15. s***h


    das geht doch nicht. denn, du hast ihn den befehl gegeben den rest auszurechnen.
    Und jetzt, was bringt dir dann der if befehl. er wird beide antworten schreiben.
    du musst es abändern:
    <?php
    if ($zahl % 2==1)
    {
    echo "zahl ist ungerade";
    }
    else
    {
    echo "zahl ist gerade";
    }
    ?>



    Nein, meine Lösung stimmt schon so ;)
    Wenn du mir nicht glaubst, dann probier es doch mal aus, indem du anstatt $zahl=rand(1,100); einfach $zahl=8; eingibst ;)
    Er kann gar nicht beide Antworten schreiben: Es wird zuerst die if ($zahl % 2)-Bedingung abgearbeitet, und wenn diese true ist (sie ist true oder 1, wenn die Zahl ungerade ist, da dann Rest 1 rauskommt und 1 ist true), dann werden NUR die ersten geschweiften Klammern ausgeführt, ist die if ($zahl % 2)-Bedingung aber false (0 = false), dann wird else {...} abgearbeitet.

    <?php
    
    $zahl=rand(1,100);
    
    if ($zahl % 2)
    
    {
    echo 'die Zahl ist ungerade';
    } else {
    echo 'die zahl ist gerade';
    }
    
    ?>




    Beitrag geaendert: 17.3.2007 14:19:01 von sesch
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!