Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Schleife

Diskussion: Schleife im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, Bin noch ein Anfänger in PHP, aber verweist mich bitte trotzdem nicht auf irgendwelche Tutorials, habe die schon ...

Antwort
Alt 12.02.09, 22:31   #1 (permalink)
 
Registriert seit: 19.05.07
Lemon Leistung: Facit NTK
Likes: 0
Standard Schleife

Anzeige

Hallo,

Bin noch ein Anfänger in PHP, aber verweist mich bitte trotzdem nicht auf irgendwelche Tutorials, habe die schon durchgeschaut und die Antwort nicht gefunden.
Also nun zum Problem, folgende Aufgabe:

Es gibts ein Anfangskapital von 1000 Euro.
Zwei Leute, A und B haben Zugriff auf das Geld, während A jeden 7. Tag 15 Euros abhebt, hebt B alle 10 Tage 10 Euro ab. Anmerkung: am "0. Tag" heben beide gleich ab)
Die Frage ist nun, wann das Anfangskapital < 0 ist, also wieviele Tage vergehen. Bin leider nicht weiter als bis zu einem, ich glaube richtigen Ansatz gekommen:

$anfangskapital = 1000;
$a = 15 Euro;
$b = 10 Euro;

while ($anfangskapital > 0) {

for( keine ahnung was hier rein gehört^^ ) {

if($h%7 == 0 OR $h == 0) {
$anfangskapital = $anfangskapital - $a ;
}
if($h%10 == 0 OR $h == 0) {
$anfangskapital = $anfangskapital - $b;
}
}
}

Ich glaube, dass beim noch ein paar Sachen fehlen, aber kein Plan was ergänzt werden muss.
Also Danke schon mal im vorraus

MfG

Lemon ist offline   Mit Zitat antworten
Alt 12.02.09, 23:10   #2 (permalink)
Moderator
 
Benutzerbild von lightsaver
 
Registriert seit: 19.06.06
lightsaver Leistung: Pentium Ilightsaver Leistung: Pentium Ilightsaver Leistung: Pentium I
Likes: 52
Standard

Hi,

einen kleinen Hinweis vorweg. Verwende bitte die code-tags, da der Quelltext dann viel lesbarer wird

Nun zu deiner Frage:

Deine Idee sieht ja schonmal ganz gut aus. Einige Sachen hätte ich dann aber doch noch:

- wofür machst du eine while und eine for-schleife? Eigentlich müsste die while-Schleife reichen.
- es reicht ein if($h % 7 == 0) , da 0 % 7 = 0 (gleiches gilt für die 10 )
- wo kommt das $h her? Also ich weiß natürlich, was es sein soll, aber schreib das auf und überlege, wann und wie du es ändern musst.
- was willst du als Ergebnis? Die Anzahl der Tage? Wann und wo gibst du das aus?

Mit den vier Punkten müsste der Code eigentlich schon lauffähig sein. Interessant sind so Punkte wie: Wenn beide am gleichen Tag abholen, wer könnte zuerst? Was passiert, wenn das Kapital nicht mehr reicht? Sagen wir es sind noch 5? da und B will Geld abheben. Soll das gehen?
Solche Fälle hast du hier noch nicht benannt, daher sind die natürlich auch noch nicht im Code berücksichtigt. Könntest du aber als nächstes Ziel nehmen
lightsaver ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 13.02.09, 11:01   #3 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Code:
<?php
$anfangskapital = 1000;
$a = 15;
$b = 10;
$x = 1; ### Zähler für While-Schleife

while(1)
{	
	###checken für A
	if($anfangkapital ==$a)
	{
	echo "A kann nichts mehr abheben und ist nach" . $x . " Tagen pleite :P ";
	break;
	}
	
	###checken für B
	if($anfangkapital ==$b)
	{
	echo "B kann nichts mehr abheben und ist nach" . $x . " Tagen pleite :P ";
	break;
	}

	### A hebt Geld ab
	if($x % 7==0)
	{
		$anfangkapital = $anfangskapital - $a;
	}
	
	### B hebt Geld ab
	if($x % 10==0)
	{
		$anfangkapital = $anfangskapital - $b;
	}	
	
	### Zähler erhöhen
	$x++;
}

?>
Sollte eigentlich so laufen, wobei ich es jetzt nicht getestet habe und auch schon sehr lange kein PHP mehr programmiert habe.
weau ist offline   Mit Zitat antworten
Alt 13.02.09, 11:30   #4 (permalink)
Moderator
 
Benutzerbild von lightsaver
 
Registriert seit: 19.06.06
lightsaver Leistung: Pentium Ilightsaver Leistung: Pentium Ilightsaver Leistung: Pentium I
Likes: 52
Standard

@weau:

Wieso schreibst du hier den kompletten Code? Damit ist doch der Lerneffekt fürn Popo zumal die Idee vom Threadersteller doch schon gut und ausbaufähig war.
lightsaver ist offline   Mit Zitat antworten
Alt 13.02.09, 13:20   #5 (permalink)
 
Benutzerbild von rami
 
Registriert seit: 09.02.08
rami Leistung: Facit NTK
rami eine Nachricht über ICQ schicken rami eine Nachricht über Skype™ schicken
Likes: 0
Standard

PHP-Code:
while(1)

Warum nich
PHP-Code:
while($anfangskapital >= 0)

???
__________________
rami ist offline   Mit Zitat antworten
Alt 13.02.09, 13:23   #6 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Gibt da selbstverständlich mehrere Möglichkeiten dieses Problem zu lösen.
Ich habs halt mit einer Endlosschleife gemacht und die wird dann mit break; verlassen.

Den Quellcode habe ich überigens gepostet, damit der Threadersteller mal einen kleinen Überblick bekommt, wie man solche Probleme angehen kann und nicht stundenlang alleine am rumbasteln ist und die Motivation verliert.
weau ist offline   Mit Zitat antworten
Alt 13.02.09, 13:26   #7 (permalink)
 
Benutzerbild von rami
 
Registriert seit: 09.02.08
rami Leistung: Facit NTK
rami eine Nachricht über ICQ schicken rami eine Nachricht über Skype™ schicken
Likes: 0
Standard

Dann packs aber nächstes Mal wneigstens in [SPOILER]-Tags
__________________
rami ist offline   Mit Zitat antworten
Alt 13.02.09, 13:59   #8 (permalink)
Senior Member
 
Benutzerbild von odigo
 
Registriert seit: 25.12.04
odigo Leistung: 8086odigo Leistung: 8086
odigo eine Nachricht über ICQ schicken
Likes: 54
Standard

@Lemon: Merk dir das mit den Endlosschleifen erst gar nicht. Sowas macht man nur wenns gar nicht anders geht. Ich bau mittlerweile in Endlosschleifen schon Zähler ein, um zu verhindern daß sie wirklich endlos läuft sollte irgendwo ein logischer Fehler drin sein.
odigo ist offline   Mit Zitat antworten
Alt 13.02.09, 16:43   #9 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: 8086
Chakky eine Nachricht über ICQ schicken
Likes: 110
Standard

Zitat:
Original von odigo
@Lemon: Merk dir das mit den Endlosschleifen erst gar nicht. Sowas macht man nur wenns gar nicht anders geht. Ich bau mittlerweile in Endlosschleifen schon Zähler ein, um zu verhindern daß sie wirklich endlos läuft sollte irgendwo ein logischer Fehler drin sein.
OT:

bricht php nicht nach max ausführungszeit das script alleine ab? sofern in der php.ini die zeit dafür gesetz wurden ist?

/OT
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
Alt 13.02.09, 17:39   #10 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Selbst wenn, dann ist das immer noch ein Mechanismus, der den Server retten soll, wenn wirklich alles schiefgeht. Von Haus aus in seiner Software auf sowas zu hoffen ist schon sehr fragwürdig.
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Alt 13.02.09, 17:59   #11 (permalink)
Themenstarter
 
Registriert seit: 19.05.07
Lemon Leistung: Facit NTK
Likes: 0
Standard

Danke für alle Antworten, werde versuchen es umzusetzen.
Lemon ist offline   Mit Zitat antworten
Alt 13.02.09, 22:40   #12 (permalink)
404
 
Benutzerbild von 404
 
Registriert seit: 28.11.04
404 Leistung: Z3
404 eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
@Lemon: Merk dir das mit den Endlosschleifen erst gar nicht. Sowas macht man nur wenns gar nicht anders geht. Ich bau mittlerweile in Endlosschleifen schon Zähler ein, um zu verhindern daß sie wirklich endlos läuft sollte irgendwo ein logischer Fehler drin
sein.
Dem kann ich nur zustimmen. @weau in deiner Schleife ist nämlich genau so ein logik Fehler drin

Code:
###checken für A
if($anfangkapital == $a)
{
	echo "A kann nichts mehr abheben und ist nach" . $x . " Tagen pleite :P ";
	break;
}
Besser:

Code:
###checken für A
if($anfangkapital < $a)
{
	echo "A kann nichts mehr abheben und ist nach" . $x . " Tagen pleite :P ";
	break;
}
Es muss ein kleiner als (<) sein. Ansonsten läuft die Schleife endlos, wenn sich das Anfangskapital nicht ohne REST durch $a bzw. $b teilen lässt.

Sorry bin grad in Klugscheißerstimmung
__________________
Major Fault, General Error and Colonel Panic came together to celebrate timeout.


------------------------------------------------
http://www.shick.de/
------------------------------------------------
404 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Schleife
Themen-Optionen
Ansicht

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 sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
While Schleife weau Code Kitchen 16 04.01.09 18:17
Do...Until-Schleife in VB S-H-A-W-N Code Kitchen 15 15.08.07 11:46
for-Schleife (C) BlackSun1102 Code Kitchen 8 12.01.07 20:33
Batch - Schleife Zahlen adrian90 Code Kitchen 2 15.02.06 12:03
Ich habe ein Problem mit der FOR-Schleife bei PHP Mano (Web-) Design und webbasierte Sprachen 1 09.09.03 12:59


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61