Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
  #1  
Alt 22.10.04, 13:37
Benutzerbild von maxhb
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Bremen
Alter: 36
Beiträge: 1.535

Kleines PHP-Quiz


Hi!
Kurzer Spass zum Wochenende für alle PHP-Coder:
Angenommen man hat folgende Funktion, die entscheidet, ob eine zahl gerade ist oder nicht:
Code:
<?php
function gerade($zahl) {
 $istGerade = ($zahl % 2 == 0);
 if($istGerade) {
    echo "$zahl ist gerade!<br>";
  } else {

    echo "$zahl ist ungerade!<br>";
  }
   // Edit: folgende Zeile fehlte:
  return $istGerade;
}

$zahlen = range(1,10);
?>
Jetzt möchte man diese Funktion verwenden, um herauszufinden, welche der Zahlen von 1 - 10 (array $zahlen) gerade ist und welche ungerade. zusätzlich soll ausgegeben werden, ob alle zahlen gerade sind:
Code:
<?php
$alleGerade= true;
foreach($zahlen as $zahl) {
  $alleGerade = $alleGerade && gerade($zahl);
}
if ($alleGerade) echo "Alle Zahlen sind gerade!";
?>
Und jetzt die Quizfrage: Warum funktioniert das nicht wie erwartet? Na, wer findet den Fehler ohne das Programm auszuführen?

CU
maxhb

P.S.: Eigentlich sollte hier ja der Freitagsflame gestartet werden, aber heute mal was zum Grübeln
__________________
FreeBSD || MySQL 5.x || TYPO3 3.6 - 4.2

Meine Stadt, meine Firma, mein Redaktionssystem.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #2  
Alt 22.10.04, 14:09
Forum Zuschauer
 
Registriert seit: 19.08.04
Alter: 30
Beiträge: 7

du hast die var direkt beim ersten mal auf false gesetzt und deswegen wurde die funktion "gerade" nicht mehr ausgeführt.
Zitat:
<?

function gerade($zahl) {

$istGerade = ($zahl % 2 == 0);

if($istGerade) {
echo "$zahl ist gerade!<br>";
return 1;
} else {

echo "$zahl ist ungerade!<br>";
return 0;
}

}

$zahlen = range(1,10);



$alleGerade= true;
foreach($zahlen as $zahls) {
if(!gerade($zahls)){
$alleGerade=false;
}
}
if ($alleGerade){
echo "Alle Zahlen sind gerade!";
}



?>
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #3  
Alt 22.10.04, 14:11
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Mönchengladbach
Alter: 30
Beiträge: 396
Thoral eine Nachricht über ICQ schicken

*lol*
__________________
TYPO3: v3-4 | MySQL 5.0.21 | PostgreSQL 8.1.4
Server: vva.de/profihost.com/hosteurope.de
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #4  
Alt 22.10.04, 14:20
Benutzerbild von maxhb
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Bremen
Alter: 36
Beiträge: 1.535

Hi!
Zitat:
Zitat von clan
du hast die var direkt beim ersten mal auf false gesetzt und deswegen wurde die funktion "gerade" nicht mehr ausgeführt.
Ups, kleiner Fehler im Listing, ahbe ich gerade korrigiert: In "gerade" fehlte die Return-Anweisung!
Wer findet jetzt den Fehler?!
BTW: Das ist natürlich kein reales Problem, sondern eher ein kleiner Brain-Teaser, will doch mal sehene, wer sich hier mit PHP auskennt!

CU
maxhb
__________________
FreeBSD || MySQL 5.x || TYPO3 3.6 - 4.2

Meine Stadt, meine Firma, mein Redaktionssystem.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #5  
Alt 22.10.04, 14:25
Forum Zuschauer
 
Registriert seit: 19.08.04
Alter: 30
Beiträge: 7

Zitat:
foreach($zahlen as $zahl) {

$alleGerade = $alleGerade && gerade($zahl);
echo intval($alleGerade)."<br>";
}
er geht nicht mehr in die gerade funktion, weil das hier "$alleGerade &&" nicht mehr zutrift..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #6  
Alt 22.10.04, 14:34
Benutzerbild von maxhb
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Bremen
Alter: 36
Beiträge: 1.535

We have a winner!
Zitat:
Zitat von clan
er geht nicht mehr in die gerade funktion, weil das hier "$alleGerade &&" nicht mehr zutrift..
Das ist eben der Witz an der Sache. PHP optimiert einfach den Funktionsaufruf von "gerade" weg, da der Ausdruck "false && gerade($zahl)" nie mehr true ergeben kann.
Korrekt müsste es also heissen:
Zitat:
foreach($zahlen as $zahl) {
$alleGerade = gerade($zahl) && $alleGerade;
}
Da PHP logische Ausdrücke von Links nach rechts abarbeitet leistet die obige Programmierung dann auch das, was man erwarten würde.

CU
maxhb
__________________
FreeBSD || MySQL 5.x || TYPO3 3.6 - 4.2

Meine Stadt, meine Firma, mein Redaktionssystem.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #7  
Alt 22.10.04, 14:39
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Mönchengladbach
Alter: 30
Beiträge: 396
Thoral eine Nachricht über ICQ schicken

supi clan
ich wusste du schaffst es....

is doch mal was anderes als tvn, oder?

@maxhb
beim nächsten mal was schwereres
der clan wird grad erst warm :lol:

cu
thorsten
__________________
TYPO3: v3-4 | MySQL 5.0.21 | PostgreSQL 8.1.4
Server: vva.de/profihost.com/hosteurope.de
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #8  
Alt 22.10.04, 14:40
Forum Zuschauer
 
Registriert seit: 19.08.04
Alter: 30
Beiträge: 7

Zitat:
Zitat von maxhb
We have a winner!
Zitat:
Zitat von clan
er geht nicht mehr in die gerade funktion, weil das hier "$alleGerade &&" nicht mehr zutrift..
Das ist eben der Witz an der Sache. PHP optimiert einfach den Funktionsaufruf von "gerade" weg, da der Ausdruck "false && gerade($zahl)" nie mehr true ergeben kann.
Korrekt müsste es also heissen:
Zitat:
foreach($zahlen as $zahl) {
$alleGerade = gerade($zahl) && $alleGerade;
}
Da PHP logische Ausdrücke von Links nach rechts abarbeitet leistet die obige Programmierung dann auch das, was man erwarten würde.

CU
maxhb
*spring.hüpf* wooo ist mein mercedes? :D
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #9  
Alt 22.10.04, 14:47
Benutzerbild von maxhb
TYPO3 Forum Team
Moderator
 
Registriert seit: 19.08.04
Ort: Bremen
Alter: 36
Beiträge: 1.535

Zitat:
Zitat von Thoral
@maxhb
beim nächsten mal was schwereres
der clan wird grad erst warm :lol:
Kein Problem, mir viel halt nur kein vernünftiger freitagsflame ein, aber ich wollte Euch alle doch nicht einfach so ins WE entlassen

CU
maxhb

P.S.: Vielleicht nächste Woche etwas schwereres ...
__________________
FreeBSD || MySQL 5.x || TYPO3 3.6 - 4.2

Meine Stadt, meine Firma, mein Redaktionssystem.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
  #10  
Alt 22.10.04, 15:33
Forum Zuschauer
 
Registriert seit: 19.08.04
Alter: 30
Beiträge: 7

Zitat:
Zitat von maxhb
Zitat:
Zitat von Thoral
@maxhb
beim nächsten mal was schwereres
der clan wird grad erst warm :lol:
Kein Problem, mir viel halt nur kein vernünftiger freitagsflame ein, aber ich wollte Euch alle doch nicht einfach so ins WE entlassen

CU
maxhb

P.S.: Vielleicht nächste Woche etwas schwereres ...
na dann wünsche ich euch mal ein hammer geiles weeeeekend
und Think-Sexy wa *gg* ;)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Quiz ghoti Extension suchen und neue vorschlagen 0 03.01.08 14:13
Kleines News Problem kuhtreiber News (tt_news, mininews und Co) 2 02.07.07 11:09
Kleines Problem mit der Modern FAQ und IE cgerard TYPO3 4.x Fragen und Probleme 2 30.01.07 16:58
kleines PHP-Skript integrieren Snowboada TYPO3 3.x Fragen und Probleme 0 25.07.06 09:00
Kleines Script [Updatefunktion] CReber TYPO3 3.x Fragen und Probleme 1 13.10.04 15:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0