Anzeige

Eine Übungsaufgabe die Probleme bereitet

Eine Übungsaufgabe die Probleme bereitet | PSD-Tutorials.de

Erstellt von scater93, 02.10.2012.

  1. scater93

    scater93 Wissen´s Suchender

    Dabei seit:
    04.09.2012
    Beiträge:
    36
    Geschlecht:
    männlich
    Ort:
    Mönchengladbach
    Software:
    Photoshop CS6
    Eine Übungsaufgabe die Probleme bereitet
    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.
     
    #1      
  2. Talirion

    Talirion People Fotograf PSD Beta Team

    545
    Dabei seit:
    10.10.2004
    Beiträge:
    1.187
    Geschlecht:
    männlich
    Ort:
    Dresden
    Software:
    PS CS 6 ext.; LR4; WACOM
    Kameratyp:
    Nikon D800
    Eine Übungsaufgabe die Probleme bereitet
    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...
     
    #2      
  3. cebito

    cebito undefined

    262
    Dabei seit:
    08.03.2008
    Beiträge:
    8.316
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kameratyp:
    zum durchgucken
    Eine Übungsaufgabe die Probleme bereitet
    AW: Eine Übungsaufgabe die Probleme bereitet

    Erstmal - welche Sprache?

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

    PHP:
    1.  
    2. if ($i % 3 == 0){
    3.   echo "ich bin durch 3 Teilbar";
    4. }else{
    5.   echo "ich nicht";
    6. }
     
    #3      
  4. stoerchu

    stoerchu C4Der

    Dabei seit:
    18.02.2006
    Beiträge:
    19
    Geschlecht:
    männlich
    Ort:
    CH
    Software:
    no comment
    Kameratyp:
    Nikon D60
    Eine Übungsaufgabe die Probleme bereitet
    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.
     
    #4      
  5. Raptor1969

    Raptor1969 Noch nicht viel geschrieben

    Dabei seit:
    22.12.2009
    Beiträge:
    27
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 1D Mark III
    Eine Übungsaufgabe die Probleme bereitet
    AW: Eine Übungsaufgabe die Probleme bereitet

    Es geht auch noch einfacher, starten bei 3 und immer +3 rechnen, Ergebnis ausgeben, stoppen bei 300!
     
    #5      
  6. kleeaar

    kleeaar zwo-eins-risiko!

    1
    Dabei seit:
    26.03.2008
    Beiträge:
    2.766
    Geschlecht:
    männlich
    Kameratyp:
    Samsung GX 1L
    Eine Übungsaufgabe die Probleme bereitet
    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:
    1. <?php
    2. $max=intval(300/3);
    3. $a=0;
    4. for($i=0; $i<=$max; $i++){
    5. print ($i*3).', ';
    6. $a++;
    7. if($a==10){
    8. print '<br>';
    9. $a=0;
    10. }
    11. }
    12.  
    13. ?>
    14.  
    ist relativ einfach.

    EDIT: und jetzt nochmal als universeller Code:
    PHP:
    1.  
    2. <?php
    3. //-----------------
    4. $startzahl=0;
    5. $endzahl=300;
    6. $divisor=3;
    7. //-----------------
    8. if ($startzahl % $divisor == 0){
    9. $min=intval($startzahl/$divisor);
    10. }else{
    11. $min=intval($startzahl/$divisor)+1;
    12. }
    13. $max=intval($endzahl/$divisor);
    14. //-----------------
    15. $a=0;
    16. for($i=$min; $i<=$max; $i++){
    17. print ($i*$divisor).', ';
    18. $a++;
    19. if($a==10){
    20. print '<br>';
    21. $a=0;
    22. }
    23. }
    24.  
    25. ?>
     
    Zuletzt bearbeitet: 02.10.2012
    #6      
  7. cebito

    cebito undefined

    262
    Dabei seit:
    08.03.2008
    Beiträge:
    8.316
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kameratyp:
    zum durchgucken
    Eine Übungsaufgabe die Probleme bereitet
    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...
     
    #7      
  8. Raptor1969

    Raptor1969 Noch nicht viel geschrieben

    Dabei seit:
    22.12.2009
    Beiträge:
    27
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 1D Mark III
    Eine Übungsaufgabe die Probleme bereitet
    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!
     
    #8      
  9. Myhar

    Myhar Hat es drauf

    Dabei seit:
    01.11.2007
    Beiträge:
    2.079
    Geschlecht:
    männlich
    Ort:
    Ö
    Eine Übungsaufgabe die Probleme bereitet
    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.
     
    #9      
x
×
×