Antworten auf deine Fragen:
Neues Thema erstellen

Eine Übungsaufgabe die Probleme bereitet

scater93

Wissen´s Suchender

Hi,
Ich bräucht mal hilfe bei einer kleinen Übungsaufgabe die Ich heute in der Schule bekommen hab. Die Aufgabe lautet Alle zahlen von 0-300 auszugeben, die durch 3 teilbar sind. Nach jeder 10 Ausgabe soll dann ein Zeilenumbruch sein.

Wir rätseln momentan, finden aber keinen Ansatz wie wir Anfangen sollen.
 

Talirion

People Fotograf

PSD Beta Team
AW: Eine Übungsaufgabe die Probleme bereitet

teile die aktuelle zahl durch 3, wandle sie in int um und zieh sie vom ergebnis ab wenn der rest > 0 ist keine ausgabe .... weiterer Zähler innerhalb der scheife bei 10 auf 0 setzt und den zeilenumbruch ausgibt...
 

cebito

undefined

AW: Eine Übungsaufgabe die Probleme bereitet

Erstmal - welche Sprache?

Das Stichwort wäre hier modulo-operator, bsp:

PHP:
if ($i % 3 == 0){ 
  echo "ich bin durch 3 Teilbar";
}else{
  echo "ich nicht";
}
 
AW: Eine Übungsaufgabe die Probleme bereitet

Ich würde hier definitiv den modulo-operator wählen. Dies braucht am wenigsten Scripttext und wird wohl auch am schnellsten sein.

Modulo teil eine Zahl beispielsweise 11 durch eine zweite Zahl (hier 3). Dies ergibt aber dann keine Dezimalzahl, sondern der Rückgabewert ist der Rest, der bleibt, wenn man die Zahl durch 3 teilt. In diesem Beispiel wäre es die Zahl 2, die zurückgegeben wird.

Etwas umständlicher wäre das runden der Dezimalzahl auf 0 Nachkommastellen und dann schauen, ob die vorherige und die gerundete Zahl den gleichen Wert aufweisen.
 

Raptor1969

Noch nicht viel geschrieben

AW: Eine Übungsaufgabe die Probleme bereitet

Es geht auch noch einfacher, starten bei 3 und immer +3 rechnen, Ergebnis ausgeben, stoppen bei 300!
 

kleeaar

zwo-eins-risiko!

AW: Eine Übungsaufgabe die Probleme bereitet

also theoretisch muss man nicht die schleife bis 300 laufen lassen.
man könnte auch nur tatsächlich die zahlen die durch 3 teilbar sind berechnen.
dann brauch die Schleife gleich mal 200 Berechnungen weniger!

Dazu musst du die maximale Zahl durch 3 teilen.
also in deinem Fall 300/3 =100
das Ergebnis lässt du dir als Ganzzahl ausgeben.

Jetzt brauchst du nurnoch eine Schleife zu schreiben und jeden Wert der Schleife mit 3 multiplizieren.
noch einen Zähler mitschleppen, der auf 10 zählt und den Absatz hinzufügt und fertig.



PHP:
<?php
$max=intval(300/3);
$a=0;
for($i=0; $i<=$max; $i++){
print ($i*3).', ';
$a++;
if($a==10){
print '<br>';
$a=0;
}
} 

?>

ist relativ einfach.

EDIT: und jetzt nochmal als universeller Code:
PHP:
<?php
//-----------------
$startzahl=0;
$endzahl=300;
$divisor=3;
//-----------------
if ($startzahl % $divisor == 0){ 
$min=intval($startzahl/$divisor);
}else{
$min=intval($startzahl/$divisor)+1;
}
$max=intval($endzahl/$divisor);
//-----------------
$a=0;
for($i=$min; $i<=$max; $i++){
print ($i*$divisor).', ';
$a++;
if($a==10){
print '<br>';
$a=0;
}
} 

?>
 
Zuletzt bearbeitet:

cebito

undefined

AW: Eine Übungsaufgabe die Probleme bereitet

@raptor & @kleeaar - auf die Idee bin ich natürlich auch gekommen ;) nur ist das nicht die Aufgabenstellung. Dat Ding ist für die Schule. Ich hab früher immer Abzug gekriegt, weil ich selten bzw. fast nie Rechenwege aufgeschrieben habe. Also alles was im Kopf abging weggelassen ;) Dem konnten bzw. durften die Lehrer nicht folgen :hmpf:
Also, wenn du in Brandenburg bist und der Lehrer sagt gehe über Hamburg nach Berlin, dann gehst du über Hamburg nach Berlin, und wenn du dafür 30x solange brauchst...
 

Raptor1969

Noch nicht viel geschrieben

AW: Eine Übungsaufgabe die Probleme bereitet

Naja, ich bin eigentlich immer davon ausgegangen, dass man bei der Programmierung immer den einfachsten oder schnellsten Weg gehen nehmen sollte.
Dann bleibt wohl wirklich nur noch das Teilen durch Drei und Prüfen auf Rest!
 

Myhar

Hat es drauf

AW: Eine Übungsaufgabe die Probleme bereitet

Nachdem das Problem des TE schon gelöst ist und er sich nicht mehr meldet, ob es auch passt?, hier eine kleine Anmerkung zu dem nachfolgenden, teilweise OT:
Das stimmt schon, der schnellste und einfachste Weg ist immer gut. Nur hast du bei deinem Vorschlag den ersten Schritt im Kopf gemacht. Dabei hast du auch einen kleinen Fehler gemacht: Er muss bei 0 und nicht bei 3 anfangen.
Minimaler "Schlampigkeitsfehler", aber immerhin ein Fehler, der bei einem ordentlichen Programm nicht passieren darf. Man möchte ja Anfangs- und Endwert idealerweise bestimmen können, das funktioniert bei deiner Vorgehensweise (fang bei 3 an) nicht, wenn man das Bsp. für die Zahlen von 47-300 braucht.
Dein Ansatz hat jedoch auch viel brauchbares, er muss nur adaptiert werden. Man fängt bei der ersten Zahl an und prüft, ob diese durch 3 teilbar ist. Ist das nicht der Fall, auf zur nächsten. So lange, bis man eine Zahl findet, die durch 3 teilbar ist. Hat man die erste Zahl gefunden, dann kann man bedenkenlos immer 3 dazuzählen und man ist bei deinem einfachsten und schnellsten Programmierweg. Dann passieren auch nicht solche Fehler, dass man die erste Zahl (zB 0) vergisst.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.477
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben