AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anfänger bittet um Rat

Ein Thema von Jemuzu · begonnen am 19. Jan 2017 · letzter Beitrag vom 19. Jan 2017
Antwort Antwort
Slipstream
(Gast)

n/a Beiträge
 
#1

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 11:37
I und J sind offensichtlich (hoffentlich) Variablen des Typs Integer.

For I := 1 to 100 do bedeutet übersetzt soviel wie: Der Variablen I wird fortlaufend in einer Schleife der Wert 1 bis 100 übergeben. Dasselbe passiert in der Schleife mit der Integer-Variablen J.

Mit IF wird geprüft, ob der nachfolgende Ausdruck wahr oder falsch ist: Wenn das Produkt aus den beiden Variablen I und J als Rest den Wert 90 aufweist. Bei genauerer Betrachtung ist das natürlich vollkommener Quatsch, denn bei einer Multiplikation von Ganzzahlen (Integer) kommt niemals ein Rest zustande, das geschieht einzig bei einer Division, wenn es z.B. hieße: 100 geteilt durch 11, dann käme ein Rest von 1 heraus, denn 11 mal 9 ist 99. Das Gegenstück von MOD ist DIV, das den Wert vor dem Komma extrahiert und zurückliefert, das wäre bei diesem Beispiel eben die 9. Bei der gestellten Aufgabe kommt bei jedem Schleifendurchlauf somit 0 heraus, weil es bei einer Multiplikation keinen Rest geben kann. Mir leuchtet der Zweck dieser Aufgabe ebenfalls nicht ein.

Ich würde vorschlagen, du fragst deinen Lehrer danach und läßt dir von ihm noch einmal genau erklären, was er von dir will.

Geändert von Slipstream (19. Jan 2017 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.230 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 11:41
Wenn das Produkt aus den beiden Variablen I und J als Rest den Wert 90 aufweist. [...] Bei der gestellten Aufgabe kommt bei jedem Schleifendurchlauf somit 0 heraus
Nein, das hast du falsch verstanden.

"X mod Y" bedeutet: "Der Rest der nach X durch Y übrig bleibt". Die Bedingung ist dass dieser Rest Null sein soll. Beispiel:

60*42 mod 90
= 2520 mod 90

25020 durch 90 ist genau 28, der Rest ist also Null.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.378 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 11:47
Teil 1 wurde ja jetzt ausführlich erklärt.

Teil 2 sieht aus, wie ein Tastatur-Echo.
Also ein Zeichen Tippen und das gleiche Zeichen wieder ausgeben.
EDIT:
Falsch. Nur das letzte Zeichen wird ausgegeben.

Teil 3 ist Müll.
Ch ist eine Zeichen-Variable, laut der ersten Zeile.
In der zweiten Zeile soll aber ein Boolscher Wert zugewiesen werden. Das gibt dann einen Fehlermeldung. das sollte sich nicht mal kompilieren lassen.
Peter
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 11:52
Was hält dich eigentlich davon ab, das ganze einmal selber durch den Compiler zu jagen (die Starter-Version gibt es kostenlos) und zu schauen, was dabei heraus kommt?
Wobei der angegebene Code mehr nach Pseudocode denn echtem Delphi-Code aussieht.
Sebastian
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#5

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 11:57
@Günther: Stimmt, danke, hab ich korrigiert, war mein Fehler.

@Jemuzu: In deinem Beispiel mit der For-Schleife gibt es aber gar keine Division, sondern nur eine Multiplikation. Ddeshalb kann es da auch keinen Rest geben, das Ergebnis ist immer 0, die If-Abfrage sinnlos.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.423 Beiträge
 
Delphi 12 Athens
 
#6

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 12:02
In deinem Beispiel mit der For-Schleife gibt es aber gar keine Division, sondern nur eine Multiplikation. Ddeshalb kann es da auch keinen Rest geben, das Ergebnis ist immer 0, die If-Abfrage sinnlos.
Sorry, aber das ist falsch.
Nachdem das Produkt aus I und J gebildet wird, wird der Modulus dessen bestimmt. Und wenn dieser 0 ist (das Produkt (I*J) ist ganz durch 90 teilbar, ohne Rest), dann wird die Meldung ausgegeben.

Ein Auszug der Ausgabe:
Code:
...
i,j waren 3 60
i,j waren 3 90
i,j waren 4 45
i,j waren 4 90
i,j waren 5 18
i,j waren 5 36
i,j waren 5 54
i,j waren 5 72
i,j waren 5 90
i,j waren 6 15
i,j waren 6 30
...
......
Lizbeth W.
Ich bin nicht zurück, ich tue nur so

Geändert von sakura (19. Jan 2017 um 15:19 Uhr)
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#7

AW: Anfänger bittet um Rat

  Alt 19. Jan 2017, 17:04
Sorry, aber das ist falsch. Nachdem das Produkt aus I und J gebildet wird, wird der Modulus dessen bestimmt. Und wenn dieser 0 ist (das Produkt (I*J) ist ganz durch 90 teilbar, ohne Rest), dann wird die Meldung ausgegeben.
Ach du meine Güte, jetzt hab ich mich aber total vergallopiert

Du hast meinen Fehler klar durchschaut: DIV gibt die Ganzzahl an, z.B. bei 10 DIV 3 wird 3 zurückgegeben. MOD gibt den Rest an, bei 10 MOD 3 wird 1 zurückgeliefert. Ich werde meinen fehlerhaften Beitrag sofort durchstreichen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz