PHP Programmieren?


23.06.2021, 21:02

das ist dabei rausgekommen, jedoch passiert nichts. Hoffe auf Hilfe

4 Antworten

Ich wollte dir gerade helfen.

Leider ist dein Ansatz so Anfängerhaft (nicht Negativ gemeint) das es ein grundlegendes workaround war und wahrscheinlich weit über euren Kenntniss stand geht.

Ich gebe dir nur folgende Tipp.

Erstellen ein Array mittels for schleife.

Die Prüfung der Farbe lässt du in einem Switch Case Laufen anstatt mit if.

Die Prüfung auf Primzahlen ist schon Tricky, lege dazu am besten ein Array mit Primzahlen an um dem Vergleich zu Beschleunigen.


akitashi60 
Fragesteller
 23.06.2021, 18:30

Wir haben absolut nichts gelernt, einfach mit der aufgabe konfrontiert

0
$array = range(min($zahl1, $zahl2), max($zahl1, $zahl2))

foreach($array as $val) {
  if($val % 2 == 0) {
    $col = 'red';
  }
  elseif(is_prime($val)) {
    $col = 'green';
  }
  else {
    $col = 'blue';
  }
}

function is_prime($n){for($i=~-$n**.5|0;$i&&$n%$i--;);return!$i&$n>2|$n==2;}

Quelle für is_prime: https://stackoverflow.com/questions/38008130/php-check-if-number-is-prime/39743570

Code ist nicht getestet.


Kiboman  23.06.2021, 18:31

Die Funktion ist_Prime kann bei vielen zahlen extrem lange dauern

bedenke das es ein timeout gibt.

0
akitashi60 
Fragesteller
 23.06.2021, 18:37

Danke erstmal. Wo genau muss ich das einbauen und was ist „$val“?

0
akitashi60 
Fragesteller
 23.06.2021, 18:40
@akitashi60

Und was sind $i und $n? Muss ich die die variablen nicht vorher festlegen?

0
KuarThePirat  23.06.2021, 18:47
@akitashi60

Sorry, aber ich kann hier in der Kommentarfunktion nicht grundsätzliche Dinge zu PHP erklären. Bitte deinen Eltern mit dem Informatiklehrer zu reden, dass ihr offenbar keine Grundlagen beigebracht bekommt.

0
regex9  23.06.2021, 18:48
@akitashi60

Je Schleifenlauf wird das nächste Element aus dem Array gezogen und in $val gespeichert:

foreach($array as $val) {

Besteht dein Array also aus den Werten 1, 2, 3, 4, 5, wäre $val im ersten Lauf 1, im zweiten Lauf 2, usw..

1
regex9  23.06.2021, 18:52
@akitashi60

Das passiert doch.

$n ist der Parameter für die Funktion is_prime. Zur Laufzeit wird er bei Aufruf der Funktion mit dem Wert von $val befüllt.

$i wird im Schleifenkopf angelegt. Lies hier.

1

Range dürfte helfen

https://www.php.net/manual/de/function.range.php

$werte = range(min(zahl1,zahl2), max(zahl1,zahl2))

alternativ

if(zahl1 < zahl2) $werte = range(zahl1, zahl2)
else $werte = range(zahl2, zahl1)

akitashi60 
Fragesteller
 23.06.2021, 18:35

Wo genau muss ich das einbauen?

0
akitashi60 
Fragesteller
 23.06.2021, 18:55
@rikks

Aber muss ich die variable $werte nicht vorher irgendwie festlegen?

0
rikks  23.06.2021, 19:11
@akitashi60

nein, dir enthält danach das Array mit den Zahlen.

anschließend musst du nur noch schauen, wie das mit der Ausgabe ist.

ich empfehle eine Schleife:

foreach($werte as $zahl) {
  // $zahl : 2 ist Rest 0 -> grade
  if(($zahl % 2) == 0) $farbe = "ff0000";
  // sonst ungrade
  else $farbe = "0000ff";

  // hier noch Primzahlen prüfen

}
1
rikks  23.06.2021, 19:15
@rikks

die Primzahlen machst du am Besten mit einer for-Schleife von 2 bis max($zahl1, $zahl2), indem du durchgehst und prüfst, ob die Zahl geteilt durch den aktuellen Wert != 0 oder ob der aktuelle Stand gleich der Zahl ist.

Restwerte kriegst du mit Modulo-rechnen (%) hin

1
akitashi60 
Fragesteller
 23.06.2021, 20:17
@rikks

und das programm weiss schon, dass $farbe für die farbe steht? Weil oben steht es als „$col“ ich probier es mal aus, danke aber schonmal

0
rikks  23.06.2021, 20:19
@akitashi60

dann mach $col draus, das sind variablen, die man benennen kann, wie man will.

0
akitashi60 
Fragesteller
 23.06.2021, 20:44
@rikks

hm hab das so eingegeben, aber funktioniert nicht

0
akitashi60 
Fragesteller
 23.06.2021, 20:56
@rikks

Jetzt kommt keine fehlermeldung, jedoch passiert nix, es wird nur das produkt angegeben. Würdest du dir das anschauen, wenn ich eine neue Frage stelle? Bzw hier als Kommentar

0
rikks  24.06.2021, 06:35
@akitashi60

am besten schreibst du deinen Code Mal auf einer Seite wie codebucket oder sowas

0
akitashi60 
Fragesteller
 24.06.2021, 09:19
@rikks

Ich hab den hier bei der frage ergänzt

0

Als nächstes kommen for-Schleifen, je eine in deine if's.

Dann brauchst du eine Methode zur Primzahlbestimmung und eine zur Farbauswahl.